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

标签 java sockets tcp

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

最佳答案

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

关于java - 有没有办法在 Java 中访问 SOL_TCP(又名 IPPROTO_TCP)套接字选项(例如 TCP_KEEPIDLE)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112310/

相关文章:

ruby-on-rails - Postgres 启用 TCP/IP 连接

python - 使用 Python 注入(inject)原始 TCP 数据包

linux - 在 TIME_WAIT 状态的套接字上接收数据

java - 具有相同数据的两个对象不相同?

java - 如何从 Vax 64 位纪元表示相应的日期和时间(小数点后 9 位)

java - POI 支持是否启用跟踪更改 API?

java连接重置错误

java - 将 Hashmap 访问到 XSL 时出现问题

c - 在函数内编写 C 套接字

java - 为什么我的代码在 while 循环后停止?