我有一個連接到服務器套接字應用程序客戶端,我有當發生斷線檢測功能:C#插座 - 如何檢測如果我的客戶已經失去了連接
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 ;
我必須關閉並再次運行我的應用程序以再次建立通信。
如何檢測我是否失去與服務器的連接?
任何人都可以幫助我嗎?
在此先感謝!
我認爲你想要的單詞是「輪詢」而不是「共享」。 –