gpt4 book ai didi

java - 如何保持套接字输出流打开并多次写入

转载 作者:行者123 更新时间:2023-12-01 15:21:18 25 4
gpt4 key购买 nike

我正在制作一个接受 TCP 套接字连接并显示它发送的信息的应用程序。这有效。我已经决定,我希望能够多次从客户端向服务器发送信息。现在这就是它的发送方式。

socketStream = socket.getOutputStream();
to_send.add(new String[][] {{
ips + ":" + socket.getPort(),
System.getProperty("user.name"),
System.getProperty("os.name")
}});

sendData(to_send);

while(!finished) {
socketStream = socket.getOutputStream();
oos = new ObjectOutputStream(socketStream);
oos.writeObject(new String[][] {{"Open","LOL"}});
oos.flush();
}

-

public void sendData(ArrayList<String[][]> d) {
try {

oos = new ObjectOutputStream(socketStream);
oos.writeObject(d);
oos.flush();


System.out.println("Sent: " + to_send.get(0));


} catch (Exception e) {

System.out.println(e.toString());
}
}

我收到此错误:

java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)
at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at Server.<init>(Server.java:57)
at Server.main(Server.java:26)

最佳答案

不要在sendData中关闭套接字。您将需要在 sendData 外部的代码中处理关闭。

编辑:当远程端终止连接时可能会导致此异常。可能发生的情况是,您使用两个 ObjectOutputStream 导致服务器出现异常,从而强制终止连接。

关于java - 如何保持套接字输出流打开并多次写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876466/

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