1 while(true)
2 {
3 try
4 {
5 bool blockstate = s.Blocking;
6 s.Blocking = false;
7 s.Send(msg,0,0);
8 if (s.Connected == false) throw new Exception("one client has shut down the connection");
9 s.Blocking = blockstate;
10 while (dataleft > 0)
11 {
12 int sent = s.Receive(msg, offset, dataleft, 0);
13 offset += sent;
14 dataleft -= sent;
15 }
16 }
17 catch (SocketException eX)
18 {
19 throw new Exception(eX.Message, eX);
20 }21 }
下断点调试的时候如果客户端正常关闭连接,程序一切正常,如果没有断点的话就会陷入死循环,就跟把5,6,7,8,9行去掉的效果一样,为什么呢,应该怎么解决?
在调试的时候还发现就算客户端正常关闭里连接,connected属性有时候竟然还会是true?
2 {
3 try
4 {
5 bool blockstate = s.Blocking;
6 s.Blocking = false;
7 s.Send(msg,0,0);
8 if (s.Connected == false) throw new Exception("one client has shut down the connection");
9 s.Blocking = blockstate;
10 while (dataleft > 0)
11 {
12 int sent = s.Receive(msg, offset, dataleft, 0);
13 offset += sent;
14 dataleft -= sent;
15 }
16 }
17 catch (SocketException eX)
18 {
19 throw new Exception(eX.Message, eX);
20 }21 }
下断点调试的时候如果客户端正常关闭连接,程序一切正常,如果没有断点的话就会陷入死循环,就跟把5,6,7,8,9行去掉的效果一样,为什么呢,应该怎么解决?
在调试的时候还发现就算客户端正常关闭里连接,connected属性有时候竟然还会是true?
我也发现这个,有高手晓得如何判断连接是否由对方断掉?