判斷Socket 服務端是否已關閉

2021-08-25 18:42:00 字數 494 閱讀 3177

最近在開發中遇到乙個問題,就是如何判斷遠端伺服器是否已經斷開連線,如果斷開那麼需要重新連線。

首先想到socket類的方法isclosed()、isconnected()、isinputstreamshutdown()、isoutputstreamshutdown()等,但經過試驗並檢視相關文件,這些方法都是本地端的狀態,無法判斷遠端是否已經斷開連線。

然後想到是否可以通過outputstream傳送一段測試資料,如果傳送失敗就表示遠端已經斷開連線,類似ping,但是這樣會影響到正常的輸出資料,遠端無法把正常資料和測試資料分開。

最後又回到socket類,發現有乙個方法sendurgentdata,檢視文件後得知它會往輸出流傳送乙個位元組的資料,只要對方socket的so_oobinline屬性沒有開啟,就會自動捨棄這個位元組,而so_oobinline屬性預設情況下就是關閉的,太好了,正是我需要的!

於是,下面一段**就可以判斷遠端是否斷開了連線:

trycatch(exception ex)

服務端socket程式

socket是一種ipc方法,本文實現乙個簡單的服務端例程,用於了解socket程式框架。socket函式用於建立套接字。bind函式用於分配ip位址和埠號。listen函式將套接字轉為可接收連線狀態。accept函式受理連線請求。如果在沒有連線的情況下呼叫該函式,則不會返回,直到有連線請求為止。c...

服務端 客戶端Socket通訊

服務端 using system using system.collections.generic using system.net using system.net.sockets using system.text using system.text.regularexpressions usi...

socket 服務端於客戶端

usr bin env python coding utf 8 time 2017 8 23 15 33 author mr zhang site file 服務端.py software pycharm from socket import import subprocess,struct,jso...