C++ 如何使用Winsock查询套接字保持活动状态值?
我正在为Java应用程序编写一个JNI库,该应用程序需要设置TCP保持活动选项的值。(它设置了保持生存时间和间隔的值),我认为它有工作,因为我可以设置java的生存/关闭,并用C++代码中的正确结果查询它。我可以设置其他两个选项,没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置是有用的 有什么想法吗C++ 如何使用Winsock查询套接字保持活动状态值?,c++,winsock,C++,Winsock,我正在为Java应用程序编写一个JNI库,该应用程序需要设置TCP保持活动选项的值。(它设置了保持生存时间和间隔的值),我认为它有工作,因为我可以设置java的生存/关闭,并用C++代码中的正确结果查询它。我可以设置其他两个选项,没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置是有用的 有什么想法吗 只是约束条件是我使用C++,Winsock,目标OS是WindowsXP或更高。 < P>参见这里:如何: 神奇的单词是getsockopt,setsockopt和SO
只是约束条件是我使用C++,Winsock,目标OS是WindowsXP或更高。
< P>参见这里:如何:getsockopt
,setsockopt
和SO_KEEPALIVE
您可能还需要WSAIoctl:
SIO\u keepalive\u VALS
,系统没有任何方法检查传递给WSAIoctl
的tcp\u keepalive
结构的当前值。您可以将它们设置为所需的值,但不能询问它们当前是什么
如果您想检查他们是否被尊重,您可以设置一个测试用例并使用wireshark或Network Monitor,然后查看值是什么。但是请注意,如果系统不遵守这些设置,那么您可能无能为力
但是,如果您试图用应用程序级别的含义重载TCP keepalive,您可能希望看到我对这个问题的回答:
WSAIoctl
的tcp\u keepalive
结构中的相应条目为SIO\u keepalive\u VALS
设置这两个所需值。不知道你还想要什么?如果您只想检查值是否被接受,请设置一个测试用例并使用wireshark查看数据包是否通过。好的,我已经能够设置选项了。我现在想买,但这似乎不可能。Wireshark是一个很好的建议,但它不是非常自动化的,这将是我下一个关注的问题。谢谢。@Alex,你必须相信你的平台。如果你设置了它们,就考虑它们的设置。但是,如果您试图用应用程序级别的含义重载TCP keepalive,您可能希望看到我对这个问题的回答: