當前位置:首頁 » 編程語言 » java斷開socket

java斷開socket

發布時間: 2022-06-12 15:11:09

java 怎麼處理socket斷開'

您好,我來為您解答:
socket.close()
你可以把inputStream和outputStream設置為成員變數,然後寫一個方法用來關閉流就好了,
又或者通過System.exit(0)關掉當前客戶端線程。
當然,你也可以直接通過工具直接把客戶端關了。
希望我的回答對你有幫助。

❷ Android Java socket運行就退出

非調試模式下打開應用。
使用socket在as3客戶端和java伺服器之間通信,發現某些情況下如果客戶端長時間不與伺服器進行通信(15-30min以上),再次進入由客戶端向伺服器發送消息,伺服器無反應。過一會,連接斷開。這種情況是在非調試模式下打開應用。

❸ java socket 判斷是否斷開了

首先想到socket類的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但經過試驗並查看相關文檔,這些方法都是本地端的狀態,無法判斷遠端是否已經斷開連接。
然後想到是否可以通過OutputStream發送一段測試數據,如果發送失敗就表示遠端已經斷開連接,類似ping,但是這樣會影響到正常的輸出數據,遠端無法把正常數據和測試數據分開。
最後又回到socket類,發現有一個方法sendUrgentData,查看文檔後得知它會往輸出流發送一個位元組的數據,只要對方Socket的SO_OOBINLINE屬性沒有打開,就會自動舍棄這個位元組,而SO_OOBINLINE屬性默認情況下就是關閉的,太好了,正是我需要的!
於是,下面一段代碼就可以判斷遠端是否斷開了連接:
try{
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}
用ping實現
package com.csdn.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
static BufferedReader bufferedReader;
public static void main(String[] args) throws IOException {
try {
Process process = Runtime.getRuntime().exec("ping 192.168.1.104");//判斷是否連接的IP;
bufferedReader = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String connectionStr = "";
while ((connectionStr = bufferedReader.readLine()) != null) {
System.out.println(connectionStr);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
bufferedReader.close();
}
}
}
ping的方法有個嚴重的BUG,就是你只能判斷對方是否連接網路,而不能判斷客戶端是否開啟...
我在寫聊天室時經常要注意客戶端異常退出的問題(比如客戶直接調用任務管理器結束程序進程),
其實在通過socket.getoutstream和socket.getinputstream流對客戶端發送、接受信息時如果socket沒連接上是會拋出異常的,這也就是為什麼Java會要求網路編程都要寫在try裡面,所以只要在catch裡面寫入客戶端退出的處理就行了,沒必要專門去想什麼方法

❹ java socket伺服器端斷開問題,怎麼解決

服務端應該是ServerSocket,然後等待客戶端的連接,並開啟新線程進行處理,在新線程中怎麼出錯都不用理,因為吧影響主線程等待新連接。

❺ Java Socket中伺服器斷開後,客戶端為什麼沒有拋異常

在客戶端退出之後,會出現socket連接中斷,此時是會拋出異常,在拋出異常時列印中斷的客戶端即可。
1. while(Binput.read()!= -1) 這種方法能判斷出客戶端輸入是否為空,客戶端斷開能跳出死循環,但是得到的數據卻從第二個開始了,所以這方法不適宜。
2. 在死循環中加入以下代碼:
try {
socket.sendUrgentData(0);
} catch (IOException e) {
done= false; //如果拋出了異常,那麼就是斷開連接了 跳出無限循環
}

❻ java socket編程 客戶端怎麼斷開socket

你可以把inputStream和outputStream設置為成員變數,然後寫一個方法用來關閉流就好了,
又或者通過System.exit(0)關掉當前客戶端線程。
當然,你也可以直接通過工具直接把客戶端關了。

❼ java中如果在關閉Socket時發生一個I/O錯誤,則會拋出一個什麼異常

java關閉socket時發生錯誤,有可能拋出IOException異常,如果資源已經關閉了,沒有做空值判斷,則會出現空指針異常NullException。

如果是使用TCP協議通信,由TCP協議是面向連接。所以當客戶端關閉後,由於沒有預先告訴服務要銷毀連接,客戶端關閉時(客戶與服務異常斷開)服務端就會出現異常(空流情況)。這些都是在意料之內的。

(7)java斷開socket擴展閱讀:

JRE是個運行環境,JDK是個開發環境。因此寫Java程序的時候需要JDK,而運行Java程序的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運行Java程序。但由於JDK包含了許多與運行無關的內容,佔用的空間較大,因此運行普通的Java程序無須安裝JDK,而只需要安裝JRE即可。

❽ java socket怎麼斷開連接

socket類,有一個senrgentdata方法,查看文檔後得知它會往輸出流發送一個位元組的數據,只要對方socket的so_oobinline屬性沒有打開,就會自動舍棄這個位元組,而so_oobinline屬性默認情況下就是關閉的

❾ java如何關閉socket連接

所以要用長連接啊。客戶端埠關閉後需要在close_wait狀態等待1-2分鍾才會徹底關閉,具體看操作系統的設置,一般默認2分鍾。詳細TCP狀態轉換可以參考TCP協議。
如果預期需要頻繁傳數據,就不要關閉埠,而是維持埠連接,每次都復用這個連接傳。如果預期有幾分鍾以上不會用到連接再關閉。

❿ Java中socketioclient如何判斷是網路斷開還是人為斷開

可以靠軟體查詢一下。
再ping一下DNS,能ping通的話整個網路就沒問題了若DNS禁ping則用nslookup試試,若可以顯示DNS地址及域名則證明網路可達,運行cmd,輸入命令,ipconfigall,查看電腦ip的詳細信息,輸入命令ping檢測網路協議,ping本機的ip,檢測本地網卡。

熱點內容
微信怎麼知道賬號密碼 發布:2024-05-04 12:20:06 瀏覽:976
我的世界伺服器如何用自己的存檔 發布:2024-05-04 12:06:36 瀏覽:336
七日殺伺服器ip怎麼設置 發布:2024-05-04 11:57:57 瀏覽:431
啟用java 發布:2024-05-04 11:51:46 瀏覽:970
mac下開發php 發布:2024-05-04 11:28:53 瀏覽:628
java介面及實現方法 發布:2024-05-04 11:05:08 瀏覽:567
iphone怎麼清理應用緩存 發布:2024-05-04 11:05:02 瀏覽:410
rest上傳文件 發布:2024-05-04 11:03:19 瀏覽:282
情侶玩游戲解壓視頻 發布:2024-05-04 11:00:57 瀏覽:779
c文件夾大小 發布:2024-05-04 10:54:35 瀏覽:678