我getInputStream().read()用來檢查客戶端是否與服務器斷開連接。它可以作業,但是read()正如檔案中所述,該功能會阻止訊息的第一個字母。所以不是列印“Hello”,而是列印“ello”。如何使read()第一個字母的功能“放開”?下面是等待輸入的服務器代碼:
while(true)
{
if(socket.getInputStream().read()==-1)//if no response
break;
String msg = bufferedReader.readLine();
if(msg!=null) {
System.out.println("Received message: " msg);
}
}
如果沒有辦法解決這個問題,getInputStream().read()檢測客戶端斷開連接的替代方法是什么?
uj5u.com熱心網友回復:
正確的方法是根本不使用單獨的 read()。只需處理 readLine() 告訴您底層連接已經消失。
對于強大的解決方案,您應該處理兩種情況:
readLine() 回傳空值;這是“流的正常結束”,如果客戶端干凈地關閉連接,我希望它會發生。
readLine() 拋出一個 IOException,你需要 try-catch 來處理它。如果連接突然終止,可能會發生這種情況,如果客戶端在沒有關閉連接的情況下退出。
您可以根據您的程式要求來決定這兩種可能性是否被同等對待。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/462588.html
上一篇:如何在localStorage上存盤套接字/在vanillaReactJS上的不同組件上使用套接字以在不同組件socket.io中使用?
