gpt4 book ai didi

Java SocketException 管道损坏

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:50 24 4
gpt4 key购买 nike

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

我遇到了java.net.SocketException:在服务器端破坏了管道。而且我已经缩小了范围问题出现在客户端的一行上。如果我移动这条线的位置,该代码有效。请看下面的代码。

客户端:

    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 here .

关于Java SocketException 管道损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com