java - Java中的数据包封装

标签 java udp ip encapsulation packet

我的数据通信类(class)分配给了我,要求我通过 UDP 封装 IP 数据包。然后我需要将这个手动制作的数据包封装到一个实际的 UDP 数据包中并通过 IP 发送它。这将产生以下协议(protocol)栈(蓝色表示我将手动创建的 header ):

enter image description here

在 Java 中有没有一种简单的方法可以做到这一点?我知道在 C 中我可以使用为 Linux 内核库中的 UDP 和 IP header 定义的结构,手动填充所有字段,并将信息连接到数据包中。但是,在 Java 中,我将无法访问 Linux 网络头文件。我也在尝试在不使用外部 API 的情况下执行此操作。

澄清一下,我计划使用 Eclipse 开发应用程序 Linux。

最佳答案

实际上,您可以尝试通过 Java Native Access 访问 Linux 内核库。

像这样: ( http://jnaexamples.blogspot.tw/2012/03/java-native-access-is-easy-way-to.html )

您可以将 TCP 数据包结构包装在 native c 代码中,然后从 java 套接字发送。

同时,如果您想组装 java中的TCP/IP数据结构。 ( http://jnetpcap.com/node/29 )

关于java - Java中的数据包封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773097/

相关文章:

Java setter 和 getter?

c# - 设计模式,以便在调用静态方法之前始终调用静态 init 方法

ios - Swift-UDP接收和发送

c++ - 无法在matlab中的UDP客户端和linux中的服务器之间发送数据

python - 在 Heroku 上阻止 IP 地址访问我的 Flask 应用程序?

java - 在heroku上部署jhipster时出现sql驱动程序问题

java - 无法为我传入的 RabbitMq 消息配置解析器

C pcap 检测入站数据报

python - 将 IP 范围转换为 CIDR 表示法的模块、脚本或算法

ubuntu - 在没有停止/启动或弹性 IP 的情况下更改 EC2 实例的公共(public) IP 地址