【发布时间】:2013-07-01 13:09:49
【问题描述】:
我有一个连接到服务器套接字的应用程序客户端,我有一个功能可以检测何时发生断开连接:
public static class SocketExtensions
{
public static bool IsConnected(this Socket socket)
{
try
{
return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0);
}
catch (Exception ex)
{
Trace.Exception(ex, true);
return false;
}
}
}
但有时这个功能检测不到断线,我一直在发送数据包,但服务器没有响应(每 5 秒发送一次轮询消息):
12:04.40.079 ; polling ================> 3|11111 ;
12:04.45.087 ; polling ================> 3|11111 ;
12:04.50.094 ; polling ================> 3|11111 ;
12:04.55.102 ; polling ================> 3|11111 ;
12:05.00.109 ; polling ================> 3|11111 ;
通常,我发送一条消息并接收另一条消息:
12:11.03.730 ; polling ================> 3|11111 ;
12:11.03.746 ; received <================ 4|11111 ;
我必须关闭并再次运行我的应用程序才能再次建立通信。
如何检测我是否失去了与服务器的连接?
谁能帮帮我?
提前致谢!
【问题讨论】:
-
我认为你想要的词是“polling”而不是“pooling”。