如果这很简单,请原谅我,因为我对服务器/客户端编码还很陌生,并且正在尝试自学。
我制作了一个服务器和客户端,它们在运行时都可以正常工作并完美交互。我遇到的问题是当我退出包含客户端的应用程序时。一旦我这样做,我就会收到一个无休止的错误说:
null -- Connection reset
java.net.SocketInputStream.read(SocketInputStream.java:113)
java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:107)
sun.nio.cs.StreamDecoder.read(StreamDecoder.java:93)
java.io.InputStreamReader.read(InputStreamReader.java:151)
在客户端对套接字的引用上调用该close()
方法似乎对此没有任何影响。我尝试从服务器调用if(socket.isClosed())
,但它说即使在客户端关闭它之后它仍然打开。
当我的应用程序退出时,如何优雅地处理关闭流和套接字?