Error : java.net.SocketException: Connection reset by peer: socket write error
Error : java.net.SocketException:由peer重置的连接:套接字写入错误提供文件时
try { DataOutputStream dos = new DataOutputStream(s.getOutputStream()); dos.writeUTF(str); dos.flush(); dos.close(); } catch (IOException e1) { e1.printStackTrace(); }
以上为出错部分的Code。
出错原因: 每次TCP Client / Server 连接中,一旦流被关闭,如dos.close(). 会导致Socket 关闭,即Client - Server通信的通道随着流的关闭而关闭。导致即便在方法中重新获取dos 如,DataOutputStream dos = new DataOutputStream(s.getOutputStream()) 也无效。
详情见:https://blog.csdn.net/justoneroad/article/details/6962567
解决方案:1、重新连接,具体操作见:https://www.cnblogs.com/yunfang/p/5420067.html
2、将所使用的Stream 声明为成员变量. 增加disconnect() 方法,在对应Action操作时,调用。
public void disconnect() { try { dos.close(); s.close(); } catch (IOException e) { e.printStackTrace(); }
3、指定传输长度 ,详情见:https://bbs.csdn.net/topics/380213679