java - Java程序中的setsockopt

标签 java

从版本 8 开始,FreeBSD 支持 IP_BINDANY 套接字选项,其手册页定义为:

If the IP_BINDANY option is enabled on a SOCK_STREAM, SOCK_DGRAM or a SOCK_RAW socket, one can bind(2) to any address, even one not bound to any available network interface in the system. This functionality (in conjunction with special firewall rules) can be used for implementing a transparent proxy. The PRIV_NETINET_BINDANY privilege is needed to set this option.

是否可以编写可以使用此功能的 Java 程序?我已经检查了 SocketOptions 的文档它显然没有列出这个选项。那么有什么解决方法吗?

关于,

拉杰

最佳答案

Is it possible to write a Java program that can use this functionality?

使用纯 Java 是不可能的。

So is there any workaround?

有几个基于 JNA/JNI 的库可用于从 Java 程序进行 Posix 系统调用;有关详细信息,请参阅此 SO 问题/答案:

我不知道这些是否适用于 FreeBSD 上的 Java。


经过进一步思考,也许可以用纯 Java(尽管必须是不可移植的)来实现它。它需要创建 SocketImpl 和/或 DatagramSocketImpl 的子类以及使用它们所需的基础设施。这会很复杂。

关于java - Java程序中的setsockopt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161437/

相关文章:

java - hibernate 查询内存不足 128MB

java - 将选定的单选按钮文本作为字符串获取

java - 以正常格式从 google 搜索获取 href - Jsoup

java - 使用基本身份验证和 ssl 调用 soap ws 时出错

java - 从具有多种数据类型的文本文件创建数组

java - java中批量插入只取一个查询,无法取所有查询

java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 26

java - 从数组创建列表 - 3 种方法哪一种更好

java - 在 Jlist 中使用 Jbutton ActionPerformed 方法创建的对象

java - 如何在 Spring Batch 中使用 StaxEventItemReader 处理复杂的 xml