進行非阻止、零字節(jié)的 Send 調(diào)用抄伍。如果該調(diào)用成功返回或引發(fā) WAEWOULDBLOCK 錯誤代碼 (10035)熏挎,則該套接字仍然處于連接狀態(tài)蚌成;否則,該套接字不再處于連接狀態(tài)凛捏。
socket.Connected 此屬性在斷網(wǎng)時并不會精確判斷連接狀態(tài),可以通過發(fā)包測試連接狀態(tài).代碼如下:
// 通過發(fā)包檢測socket連接是否存在?
private bool IsSocketConnected()?
{?
????bool connectState = false;?
????bool blockingState = socket.Blocking;?
????try
????{?
????????byte[] temp = new byte[1];?
????????socket.Blocking = false; socket.Send(temp, 1, 0);?
????????connectState = true;?
????}?
? ? catch (SocketException e)?
????{?
? ? ? ? // 產(chǎn)生 10035 == WSAEWOULDBLOCK 錯誤担忧,說明被阻止了,但是還是連接的?
? ? ? ? if (e.NativeErrorCode.Equals(10035))?
? ? ? ? {?
????????connectState = true;?
????????}?
????}?
????finally?
????{?
????????socket.Blocking = blockingState;
????}?
????return connectState;?
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者