我正在尝试在 TCP 客户端和服务器之间实现四路消息交换,其中服务器首先发送消息,接收来自客户端的回复,然后再次执行相同操作。这可以扩展到更多消息。如何保持它们之间的连接打开?如果应该有一个无限的while循环,放在哪里?我在客户端尝试了这个并得到了一个错误。我不关心这里的服务器!
// open socket
while(true) {
// read
// send reply
}
clientSocket.close();
问题在于,对于服务器发送的同一消息,缓冲区被读取了两次,然后导致此错误:
Exception in thread "main" 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.DataOutputStream.write(Unknown Source)
at java.io.FilterOutputStream.write(Unknown Source)
at TCPClient.main(TCPClient.java:52)