断开与java中的套接字

yot*_*moo 5 java sockets

嗨,我正在构建一个小的p2p程序,实现服务器端和客户端.当我在客户端程序中吃午餐时,首先想到的是连接到列表中的每个服务器,发送数据(关于客户端)并断开连接.下次客户端连接到其中一个服务器时,它将被识别.

我的问题 - 当我告诉客户端断开连接时,我得到了这个例外

java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at oop.ex3.nameserver.NameServerThread.run(NameServerThread.java:24)
Run Code Online (Sandbox Code Playgroud)

断开我刚刚写道:

 finally {
        out.close();
        in.close();
        socket.close();
    }
Run Code Online (Sandbox Code Playgroud)

那么,我该如何避免这种异常呢?谢谢!

Liv*_*Liv 10

Socket.close()的JavaDoc明确说明:

关闭此套接字也将关闭套接字的InputStream和OutputStream.

因为你已经关闭它们会引发异常!