java中判斷socket網路遠端是否斷開連線

2021-04-20 11:36:29 字數 494 閱讀 4522

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

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

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

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

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

trycatch(exception ex)

java 網路程式設計socket

埠號 用於標識程序的邏輯位址,不同程序的標識 有效埠 0 65535,其中0 1024系統使用或保留埠 傳輸協議 通訊的規則 常見協議 tcp,udp udp 1.將資料及源和目的封裝成資料報中,不需要建立連線 2.每個資料報的大小限制在64k內 3.因無連線,是不可靠協議 4.不需要建立連線,速度...

Java中的網路程式設計(Socket程式設計)2

封裝計算機的ip位址 沒有埠 public static void main string args throws unknownhostexception包含埠,用於socket通訊的 注意 傳送端和接收端的埠號要一致 埠號由接收方或者伺服器來定義 然後通知傳送方或者客戶端,按照這個埠傳送 pub...

java網路程式設計之SOCKET

建立物件的時候就會建立連線 try socket socket new socket time.nist.gov 13 catch ioeception ex 可選的 socket.setsotimeout 150000 從socket中讀取資料 inputstream in socket.geti...