C#怎麼判斷一個Socket是否連接

判斷Socket是否連接上,需要通過發包來確認。
之前確認都是調用調用socket的connected屬性,然而該屬性是上次的連接是否成功的結果,不及時。

// 檢查一個Socket是否可連接
        private bool IsSocketConnected(Socket client)
        {
            bool blockingState = client.Blocking;
            try
            {
                byte[] tmp = new byte[1];
                client.Blocking = false;
                client.Send(tmp, 0, 0);
                return true;
            }
            catch (SocketException e)
            {
                // 產生 10035 == WSAEWOULDBLOCK 錯誤,說明被阻止了,但是還是連接的
                if (e.NativeErrorCode.Equals(10035))
                    return false;
                else
                    return true;
            }
            finally
            {
                client.Blocking = blockingState;    // 恢復狀態
            }
        }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章