有没有办法在Java中访问SOL_TCP(AKA IPPROTO_TCP)套接字选项(例如TCP_KEEPIDLE)?

时间:2012-08-24 15:24:37

标签: java sockets tcp

我希望能够设置TCP套接字KEEPALIVE参数(TCP_KEEPIDLE,TCP_KEEPINTVL和TCP_KEEPCNT),但这些参数似乎在Socket类中不可用。基于SocketImplSocketOptions类的文档以及this page底部的实现细节,我得出的结论是库实现者硬编码了“级别“setsockopt到SOL_SOCKET的参数,这使得无法访问其他级别的选项,例如SOL_TCP / IPPROTO_TCP。是否有另外一个我缺少的Java类来处理这些选项?如果没有,有没有办法获取原始文件描述符号,以便我可以通过JNI将其传递给一些直接调用setsockopt的C代码,因为它似乎不能从FileDescriptor获得?

2 个答案:

答案 0 :(得分:1)

这些都是非特定于Linux的可移植选项,这可能是跨平台语言库中不可用的原因。其中大部分都有proc(5)sysctl(2)选项中的相应条目。

答案 1 :(得分:1)

您正在寻找的联机帮助页是tcp(7)。 请注意,使用IPPROTO_TCP

更安全,而不是SOL_TCP