我正在为需要设置TCP Keep Alive选项值的Java应用程序编写JNI库。 (它设置Keep Alive Timeout和Interval的值)在大多数情况下,我认为我有它工作,因为我可以在Java上设置Keep Alive on / off并在C ++代码中使用正确的结果进行查询。我可以设置其他两个选项,并且没有错误,但我不确定如何查询这些选项值。查询这些值以快速证明它们已被设置将是有用的。
有什么想法吗?
我只使用C ++,Winsock和目标操作系统是Windows XP或更高版本。
答案 0 :(得分:0)
请参阅此处:
魔术词是getsockopt
,setsockopt
和SO_KEEPALIVE
。
您可能还需要WSAIoctl:
系统没有任何方法可以检查传递给tcp_keepalive
WSAIoctl
的{{1}}结构的当前值。您可以将它们设置为您想要的值,但不能询问它们当前的内容。
如果您想检查它们是否被尊重,您可以设置测试用例并使用wireshark或网络监视器,并查看值是什么。但请注意,如果系统不遵守设置,您可能无法做任何事情。
但是,如果尝试使用应用程序级别含义重载TCP keepalive,您可能希望看到我对此问题的回答: