日期:2014-05-17  浏览次数:20696 次

Socket编程代码有点问题求大神指点多谢
#窗体中Socket异步编程,一个服务器能同时和多个客户端互发送数据,但是我这个有错误,不能同时和多个客户端通讯
socket

------解决方案--------------------
            private void listen()
             {
                 string hostName = Dns.GetHostName();
                 IPAddress[] ip = Dns.GetHostAddresses(hostName);
                 IPAddress HostIp = ip[1];
                    IPEndPoint iep = new IPEndPoint(HostIp,8882);
                    Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    serverSocket.Bind(iep);
                 serverSocket.Listen(100);
                   serverSocket.Accept();
             }

你这里只有一个 Accept,阻塞一下然后就“完了”,啥有意义的事情都不做,这是为什么?

另外,我比较反感那些把代码注释掉的做法。需要把你注释的代码删掉,留下必要的东西,才能开始读代码。你为什么不自己动手吧注释删掉呢?

我告诉你一个经验,注释越多,代码越烂。
------解决方案--------------------
serverSocket.BeginAccept这个方法是非阻塞的,不需要循环,
Accept是阻塞的需要循环。
推荐BeginAccept,http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept(v=vs.80).aspx。参考下MSDN吧