场景描述:客户端通过socket访问远程服务器,执行命令时抛异常, java.net.SocketException: Connection reset
分析:使用socket访问服务端数据时,当服务端认为已经返回全部的结果后,会主动关闭socket,此时客户端再从socket读数据会抛异常。
处理办法:
1.客户端可准确识别返回内容结束标志时,读取全部数据后主动关闭连接。
2.客户端无法准确识别返回内容结束标志时,捕获异常,忽略掉。
异常描述:
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:161)
at java.io.BufferedReader.readLine(BufferedReader.java:324)
at java.io.BufferedReader.readLine(BufferedReader.java:389)