我希望能够设置tcp socket keepalive参数(tcp\u keepidle、tcp\u keepintvl和tcp\u keepcnt),但这些参数在socket类中似乎不可用。根据socketimpl和socketoptions类的文档以及本页底部关于实现细节的部分,我得出这样的结论:库实现者将setsockopt的“level”参数硬编码为sol\u socket,这使得无法访问其他级别的选项,如sol\u tcp/ipproto\u tcp。是否还有另一个java类处理这些选项?如果没有,有没有办法得到原始文件描述符的编号,这样我就可以通过jni将它传递给一段c代码,直接调用setsockopt,因为它似乎无法从filedescriptor获得?
2条答案
按热度按时间nzkunb0c1#
您要查找的手册页是tcp(7)。请注意,使用ipproto\u tcp比使用sol\u tcp更安全
ccgok5k52#
这些都是不可移植的linux特定选项,这可能就是为什么它们在跨平台语言库中不可用的原因。不过,它们中的大多数都有各自的条目
proc(5)
以及sysctl(2)
选项。