Java Error(七)

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

猜你喜欢

转载自www.cnblogs.com/leafh/p/8989541.html
今日推荐