gpt4 book ai didi

未检测到 Java 套接字已关闭

转载 作者:行者123 更新时间:2023-11-29 09:06:59 26 4
gpt4 key购买 nike

我写了一个小服务器/客户端应用程序。这是代码

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 对象时,应该有一个异常(exception),但没有。我连线了。服务器上没有数据到达。我还在客户端上进行了 Wiresharked。 Keep-Alive 数据包已发送,但从来没有任何 TCP ACK 数据包,因此 Java 应该检测到出现问题。当连接完全建立时,在 keep-Alive Paket 之后应该有一个 TCP ACK Paket。那么我如何检测到连接已断开?

感谢您的帮助。

最佳答案

在您发送 keep-alive 段后,TCP 将在没有收到确认后重新传输,并且在收到足够多的确认后,将向调用应用程序报告错误。

可以通过发送仅触发 ACK 的 0 长度消息来确认非 Activity 连接是否继续存在。这类似于某些平台上可用的操作系统级保持 Activity 功能,但可以调整为应用程序所需的频率。

关于未检测到 Java 套接字已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418652/

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