サーバー/クライアント アプリケーションを少し書きました。ここにコードがあります
try
{
OutputStream os = clientSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
System.out.println("clientsocketstatus connected: " + clientSocket.isConnected());
System.out.println("clientsocketstatus closed: " + clientSocket.isClosed());
oos.writeObject(keepAliveNW);
}
catch(Exception e)
{
e.printstacktrace();
}
Windows で NIC を無効にし、netstat を再度有効にすると、PC1 と PC2 の間に開いている接続が表示されません。クライアントが keepAliveNW オブジェクトを送信しようとすると、例外が発生するはずですが、何も発生しません。有線接続しました。サーバーにデータが到着しません。また、クライアントでWiresharkしました。Keep-Alive パケットは送信されますが、TCP ACK パケットはまったくないため、Java は何か問題があることを検出する必要があります。接続が完全に確立されると、キープアライブ パケットの後に TCP ACK パケットが存在するはずです。では、接続が切断されたことをどのように検出できますか?
手伝ってくれてありがとう。