JAVA NIO寫服務端判斷客戶端斷開連線的方法

2021-06-27 08:57:02 字數 853 閱讀 7904

不過這個方法有個問題,就是   

1、能偵測到客戶端主動斷開與服務端的連線,但是如果客戶端掉線,服務端就接收不到了。。

2、如果處於等待狀態,就會出問題。比如說客戶端的資料還沒有準備好傳送,這樣你就已經關閉了鏈結。

最近學習nio,一直有個疑問,怎麼知道客戶端斷開了連線.

在上網找和試驗之後發現下面的方法可以實現這個目的.

我們一般會在服務端有個大的while,然後在裡面迴圈判斷是否有客戶端連線

ssc = (serversocketchannel) sk.channel();

sc = ssc.accept();

system.out.println("客戶端連線..."

+ sc.socket().getremotesocketaddress());

如果有連線,則註冊讀入的鍵

sc.configureblocking(false);

sc.register(selector, selectionkey.op_read);

然後我們就可以在有讀入的時候被通知到並及時處理,我們可以在此時加入乙個判斷,如果讀入的reccount=-1,

則可以判為斷開.

bytebuffer bf = bytebuffer.allocate(6);

socketchannel sc = (socketchannel) skey.channel();

buffer.clear();

reccount = sc.read(buffer);

if(reccount == -1)

JAVA NIO寫服務端判斷客戶端斷開連線的方法

最近學習nio,一直有個疑問,怎麼知道客戶端斷開了連線.在上網找和試驗之後發現下面的方法可以實現這個目的.我們一般會在服務端有個大的while,然後在裡面迴圈判斷是否有客戶端連線 ssc serversocketchannel sk.channel sc ssc.accept system.out....

java nio 實現選擇器客戶端,服務端

思路 建立通訊的通道 建立緩衝區 將要傳送的資料寫入緩衝區 網路通道將緩衝區中的資料發出 test public void clinet throws ioexception 9.關閉資源 schannel.close 思路 服務端 繫結監聽埠 開啟選擇器 註冊選擇器 獲取監聽事件 獲取建聽建 判斷...

qt TCP客戶端判斷服務端關閉連線

一 客戶端判斷服務端是不是已經關閉的簡單方法就是傳送傳送資料,看返回是不是有錯誤 二 客戶端建立連線 void mainwindow btn connect server void mainwindow connected success 二 判斷部分 void mainwindow btn ser...