我们将 Android 设备用作由 PC 控制的工业过程的遥控器。
有时连接可能会意外断开——电池没电、Android 设备超出范围、网络问题、无线接入点重置、Android 重新启动等。在这些情况下,PC 可能不“知道”它已断开连接因为它永远不会获得 FIN。
因此,当我在 Android 端重新启动事物并初始化套接字时,我会执行
sock = new Socket(ipAddress, portNumber);
在网络嗅探器(Wireshark)上,我可以看到 Android 发送了一个 SYN。但是因为PC 不知道它已经断开连接,即认为它仍然从以前连接,它发送RST,ACK。这会导致 Android Socket 构造函数返回 null。
我需要做的是向 PC 发送 FIN,而不是 SYN。但我认为 SYN 必须是握手中的第一个数据包(我不是网络专家)。或者,不以 SYN 开头,所以我可以开始重新使用连接,就好像什么都没发生一样。有没有办法做到这一点?如何从 Android 端打破这种僵局?(我无法控制 PC 的功能)
提前致谢。