耗尽最后60分 一定要得一结果 关于Socket的问题
客户端和服务器都在本机
192.168.1.4是本机IP
服务器端:
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverPoint = new IPEndPoint(IPAddress.Parse("192.168.1.4"),8888); //本地终结点
server.Bind(serverPoint); //绑定
server.Listen(100);
Socket s = server.Accept();
Console.WriteLine("s is Accept");
byte[] buffer = new byte[5];
int len = s.Receive(buffer);
Console.WriteLine("s第一次收到数据长度是:{0}", len);
len = s.Receive(buffer);
Console.WriteLine("s第二次收到数据长度是:{0}", len);
客户端:
Socket client = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(IPAddress.Parse("192.168.1.4"),8888);
Thread.Sleep(4000);
client.Shutdown(SocketShutdown.Both);
client2.Shutdown(SocketShutdown.Both);
client.Close();
client2.Close();
本来服务器的线程开始阻塞在s.Receive这里 因为客户端没有发送数据 但是当客户端的Thread.Sleep(4000)完了之后 调用了close函数 服务器的线程就开了
s可以无限的Receive数据了 而且每次的长度都是0
请高手来分析下是什么原因啊?