サーバーが最初にメッセージを送信し、クライアントから応答を受信してから、再び同じことを行う、TCP クライアントとサーバー間の 4 方向メッセージ交換を実装しようとしています。これは、さらに多くのメッセージに拡張できます。両方の接続を開いたままにするにはどうすればよいですか? 無限 while ループが必要な場合、どこに配置しますか? クライアント側でこれを試してみましたが、エラーが発生しました。ここのサーバーは気にしません!
// open socket
while(true) {
// read
// send reply
}
clientSocket.close();
問題は、サーバーから送信された同じメッセージに対してバッファーが 2 回読み取られ、次のエラーが発生することです。
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)