0

我正在为需要设置 TCP Keep Alive 选项的值的 Java 应用程序编写 JNI 库。(它设置 Keep Alive Timeout 和 Interval 的值)在大多数情况下,我认为我可以正常工作,因为我可以从 Java 设置 Keep Alive 开/关,并在 C++ 代码中以正确的结果查询它。我可以设置其他两个选项,并且没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置会很有用。

有任何想法吗?

唯一的限制是我使用的是 C++、Winsock 并且目标操作系统是 Windows XP 或更高版本。

4

1 回答 1

0

请参阅此处了解如何:

神奇的词是getsockopt,setsockoptSO_KEEPALIVE

您可能还需要 WSAIoctl:

系统没有任何方法检查tcp_keepalive传递给WSAIoctlfor的结构的当前值SIO_KEEPALIVE_VALS。您可以将它们设置为您想要的值,但您无法询问它们当前的值。

如果您想检查它们是否被兑现,您可以设置一个测试用例并使用 wireshark 或网络监视器,然后查看值是什么。但请注意,如果系统不遵守设置,您可能无能为力。

但是,如果试图用应用程序级别的含义重载 TCP keepalive,您可能希望看到我对这个问题的回答:

于 2013-01-07T15:02:00.503 回答