gpt4 book ai didi

Java 套接字 : Socket. close() 终止 Windows 和 Mac 上的连接不同?

转载 作者:搜寻专家 更新时间:2023-11-01 00:53:05 24 4
gpt4 key购买 nike

情况如下:我有一个 Java 应用程序,它通过 TCP 与上面带有 TCP 堆栈的微 Controller 通信。 Controller 上的 Stack 工作正常,我可以解决这个问题。

问题是:当我终止与 Controller 的连接时,我只需使用 socket.close() 即可终止连接,没问题。在我的 Mac 上,这也有效,但是当我检查 Wireshark 时,有常规终止过程 [FIN,ACK] - [ACK],但后面跟着一个 [TCP Dup ACK] 数据包,Wireshark 声称它属于我的[FIN,ACK] 数据包。这只发生在 Mac 上,不会发生在我 Mac 或上网本上的 VM 上的 Windows 机器上......

有什么我可以用来不让这个 Dup-ACK 数据包被传输的调整吗?它实际上通过声称已关闭的 session 仍处于 Activity 状态并且在连接到 Controller 10 次后,堆栈没有更多空间来接受新连接,从而激怒了 Controller 中的堆栈。

如果有人能给我提示,我将不胜感激!

最佳答案

好吧,如果这是操作系统提供的 TCP 堆栈中的问题(我相信是),您可以尝试从您的 mac 远程登录到设备并关闭连接。只是为了看看这个 dup ack 是否仍然会被发出。如果是,那么交换 Java 版本/供应商(例如)不会有太大好处......

...哦,也许您可​​以使用防火墙过滤违规数据包?这是一个疯狂的猜测,因为我实际上对 MacOS 的防火墙一无所知......

关于Java 套接字 : Socket. close() 终止 Windows 和 Mac 上的连接不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4944798/

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