C++ 如何使用Winsock查询套接字保持活动状态值?

C++ 如何使用Winsock查询套接字保持活动状态值?,c++,winsock,C++,Winsock,我正在为Java应用程序编写一个JNI库,该应用程序需要设置TCP保持活动选项的值。(它设置了保持生存时间和间隔的值),我认为它有工作,因为我可以设置java的生存/关闭,并用C++代码中的正确结果查询它。我可以设置其他两个选项,没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置是有用的 有什么想法吗 只是约束条件是我使用C++,Winsock,目标OS是WindowsXP或更高。 < P>参见这里:如何: 神奇的单词是getsockopt,setsockopt和SO

我正在为Java应用程序编写一个JNI库,该应用程序需要设置TCP保持活动选项的值。(它设置了保持生存时间和间隔的值),我认为它有工作,因为我可以设置java的生存/关闭,并用C++代码中的正确结果查询它。我可以设置其他两个选项,没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置是有用的

有什么想法吗

只是约束条件是我使用C++,Winsock,目标OS是WindowsXP或更高。

< P>参见这里:如何:

神奇的单词是
getsockopt
setsockopt
SO_KEEPALIVE

您可能还需要WSAIoctl:

对于
SIO\u keepalive\u VALS
,系统没有任何方法检查传递给
WSAIoctl
tcp\u keepalive
结构的当前值。您可以将它们设置为所需的值,但不能询问它们当前是什么

如果您想检查他们是否被尊重,您可以设置一个测试用例并使用wireshark或Network Monitor,然后查看值是什么。但是请注意,如果系统不遵守这些设置,那么您可能无能为力

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


不幸的是,这些对查询我需要的额外选项没有帮助。我已经在使用getsockopt、setsockopt和WSAIoctl,但据我所知,它们没有公开保持活动间隔和保持活动超时的值。@Alex,您可以使用传递给
WSAIoctl
tcp\u keepalive
结构中的相应条目为
SIO\u keepalive\u VALS
设置这两个所需值。不知道你还想要什么?如果您只想检查值是否被接受,请设置一个测试用例并使用wireshark查看数据包是否通过。好的,我已经能够设置选项了。我现在想买,但这似乎不可能。Wireshark是一个很好的建议,但它不是非常自动化的,这将是我下一个关注的问题。谢谢。@Alex,你必须相信你的平台。如果你设置了它们,就考虑它们的设置。但是,如果您试图用应用程序级别的含义重载TCP keepalive,您可能希望看到我对这个问题的回答: