繁体   English   中英

Java SocketException管道中断

[英]Java SocketException Broken pipe

我正在做客户端到服务器的登录通信。

我遇到了java.net.SocketException:在服务器端断开了Pipe。 而且我已将问题缩小到客户端的一行 如果我为这条线移动一个位置,代码将起作用。 请参见以下代码。

客户端:

    Socket socket = new Socket(Const.destIp, 12101);
    ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
    out.writeObject(this.message);              
    out.close();//Line that cause problem   
    ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
    ServerToClientLogin msg = (ServerToClientLogin) in.readObject();
    //out.close();//move it to here, problem solved
    in.close();
    socket.close();

服务器端:

   while (true) {
     socket = _serverSocket.accept();
     in = new ObjectInputStream(socket.getInputStream());
     msg = (ClientToServerLogin) in.readObject();

     ServerToClientLogin msgToSend = null;
     out = new ObjectOutputStream(socket.getOutputStream());
     msgToSend = handleLoginRequest(msg);
     if(msgToSend != null) out.writeObject(msgToSend);

     try { in.close(); } catch (IOException e) {e.printStackTrace();}
     try { out.close();} catch (IOException e) {e.printStackTrace(); }
     try { socket.close();} catch (IOException e) {e.printStackTrace();}

}

由于readObject和writeObject阻止了调用,所以我不知道为什么更早关闭它会遇到此类问题。

out.close(); :关闭此( out )输出流并释放与此流关联的所有系统资源。

此处查看API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM