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吧