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

javasocket斷開

發布時間: 2022-02-24 15:36:19

1. java 怎麼處理socket斷開'

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

2. java寫的socket tcp連接在小米手機上,app在前台tcp連接正常,app一退到後台或鎖屏,tcp過一會兒就斷開了

這是當然的,socket是阻塞的,你要開個線程跑

3. java socket怎麼斷開連接

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

4. 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裡面寫入客戶端退出的處理就行了,沒必要專門去想什麼方法

5. java中客戶端用socket連接上服務端之後一直沒有斷開,不定時給服務端發送數據,伺服器端如何知道

如果是一對一的話,不要用到線程,相當於一個1對1的聊天。主要是這,你看下

try{t.setText("服務端開啟,等待客戶端連接");
ss=new ServerSocket(50000);

}catch(IOException e){
System.err.println("無法在50000埠建立監聽服務");
System.exit(1);
}

try{ s=ss.accept();
fstart=true;
t.append("\n和來自"+s.getInetAddress()+"客戶端連接成功!\n");
t.append("\n你現在可以通信了");
dis=new DataInputStream(s.getInputStream());
kehu[1]=dis.readUTF();
}catch(IOException e){
System.err.println("和客戶端建立服務失敗");
System.exit(1);
}

try{

while(true){
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
t.append("\n客戶端1:"+dis.readUTF());

}

}catch(IOException e){

}

}

6. java 如何設置socket連接超時時間,主要是對服務端斷開,IP或埠錯誤的及時響應

不清楚為什麼速度會差,既然這樣就別再客戶端搞什麼超時斷開,在伺服器端搞
主流方案,也是很多公司採用的,弄個心跳檢測
每隔一段時間給伺服器端發個固定報文
伺服器端監視連接,多少秒後如果沒有接收到回應,計超時一次,超時三次強制斷開連接

心跳檢測的程序貌似c的有蠻多,java的網上一大堆假代碼,你可以下個c的來看看,翻譯成java就好

7. java的socket通信檢查掉線問題

socket 的 setSoTimeout 設置超時時間 單位是毫秒。超過設置時間拋出SocketTimeoutException 異常。
捕獲SocketTimeoutException異常關閉連接就行了。

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

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

9. java socket如果服務端掉線 客戶端應該怎樣重連,實現的思路是怎麼樣的,最好能有具體的代碼參考一下

看代碼,不明白的追問

// 無窮循環,用於自動重新連接網關
while (true) {
// 捕獲sleep異常
try {
// 捕獲socket異常
try {
// 創建socket連接
socketGateway = new Socket("127.0.0.1", 8888);

// 創建輸入輸出對象
inStream = new DataInputStream(socketGateway.getInputStream());
outStream = new DataOutputStream(socketGateway.getOutputStream());

byte buf[] = new byte[1]; // 數據緩沖區
int intLen; // 讀緩沖區返回的長度

// 無窮循環,用於讀緩沖區數據
while (true) {
// 捕獲讀緩沖區異常
try {
intLen = inStream.read(buf, 0, 1);

// 可讀長度-1則斷開連接
if (intLen == -1) {
break;
}

// 處理buf
}

// 連接斷開
catch (EOFException e) {
break;
}

// 接收數據超時
catch (SocketTimeoutException e) {
break;
}

// 超過數據包末尾
catch (IOException e) {
break;
}
}
} catch (Exception e) {
// 處理socket錯誤
}

// 休眠1秒後重連
sleep(1000);
} catch (Exception e) {
// 處理sleep錯誤
}
}

10. javasocket為什麼服務端在客戶端斷開後才能接收到數據

你可能沒有調用out.flush()方法。out是某個輸出流

熱點內容
java如何運行程序 發布:2025-01-10 07:25:53 瀏覽:562
冒險島電腦連接伺服器失敗 發布:2025-01-10 07:23:01 瀏覽:824
安卓開發要學什麼語言 發布:2025-01-10 07:21:30 瀏覽:21
紹興編程培訓 發布:2025-01-10 07:16:53 瀏覽:300
java介面和類 發布:2025-01-10 07:09:14 瀏覽:403
discuzforlinux安裝 發布:2025-01-10 07:09:10 瀏覽:229
招行支票密碼器口令是多少 發布:2025-01-10 06:55:27 瀏覽:353
好的解壓拓展實力怎麼樣 發布:2025-01-10 06:49:18 瀏覽:699
租伺服器會自帶公網ip么 發布:2025-01-10 06:49:17 瀏覽:348
mfc中ftp上傳與下載 發布:2025-01-10 06:47:06 瀏覽:350