1

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

4

2 回答 2

1

您要查找的联机帮助页是 tcp(7)。请注意,使用 IPPROTO_TCP 代替 SOL_TCP 更安全

于 2013-02-15T15:10:09.973 回答
1

这些都是不可移植的特定于 Linux 的选项,这可能是它们在跨平台语言库中不可用的原因。他们中的大多数人都有各自的条目proc(5)sysctl(2)选项。

于 2012-08-24T17:01:18.230 回答