簡體   English   中英

什么時候關閉Java中的套接字連接

[英]What time to close socket connection in Java

客戶

Socket socket = new Socket("ip", 5555);
PrintStream out = new PrintStream(socket.getOutputStream());
out.println("Hello Server!");
out.close();
socket.close();

服務器

ServerSocket serverSocket = new ServerSocket(5555);

while (true) {

    //keep listening
    Socket socket = serverSocket.accept();

    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));

    String line = in.readLine();

    System.out.println(line);

    in.close();
    socket.close();
}

如果忽略並發問題,關閉套接字連接的方法是否正確?

如果忽略並發問題,關閉套接字連接的方法是否正確?

是的,但是如果您已經關閉了輸出流,則無需關閉套接字。

如果客戶端在發送數據后立即關閉套接字,會在服務器嘗試從流中讀取數據時引起“套接字關閉”之類的異常嗎?

不能。“插座已關閉”表示已關閉插座,然后繼續使用它。 只要客戶端已讀取服務器要發送的所有內容,客戶端就可以關閉套接字:服務器將讀取客戶端已發送的所有數據,然后在下一次讀取時獲得流結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM