TcpIP連線Server端如何偵測Client已經斷線

  • 8092
  • 0

摘要:TcpIP連線Server端如何偵測Client已經斷線

以前在做TCPIP連線,都會使用Connected屬性來判別是否已經連線。

但這個屬性,只會紀錄前一次Networkstream的狀態,它是沒有即時更新的,即,Client端若斷線,Server端是無法知道的

所以google了一下,發現了"黑暗執行緒"的這篇文章

http://blog.darkthread.net/post-2011-08-11-detected-tcpclient-connection-status.aspx

重點就是,需要利用下面這一小斷程式碼來讓Server判斷Client是否已經斷線

 try
 {
    //使用Peek測試連線是否仍存在
    if (clnt.Connected && clnt.Client.Poll(0, SelectMode.SelectRead))
        closed = clnt.Client.Receive(testByteSocketFlags.Peek) == 0;
  }
  catch (SocketException se)
  {
     closed = true;
  }

 

============ 以下是簽名檔 ============

一個小小螺絲釘。

第一次建立Blog,希望以後能慢慢充實它。

Howard