Java 在 DatagramSocket 上设置不同的 IP 地址

Java set different IP address on DatagramSocket

我想在我的电脑上模拟一个网络。 我想用不同的 IP 地址发送每个数据包。 如何在Socket上设置IP地址?

比如我想设置我的IP地址是192.168.1.1或者192.168.1.1/24。 我该怎么办?

我只知道怎么设置端口号

private static DatagramSocket socket; socket = new DatagramSocket(1024);

我可以使用吗 DatagramSocket(int port, InetAddress laddr) 初始化我的套接字?

如果是,我应该在参数中输入什么"laddr"?

假设您的意思是设置源 IP 地址 - 您不能。 UDP 套接字绑定到计算机上的特定 IP 接口(或多个接口)。 IP接口是什么'has'地址。使用 IP 套接字的程序只能选择要使用的现有接口。

请注意,即使您可以任意设置传出数据报中的源地址字段,也没有简单的方法来接收任何回复 - 因为您的计算机上没有任何内容响应您选择的地址(没有 IP该地址的接口)。

如果你想在一个程序中模拟不同的IP地址,你需要模拟IP。这将涉及使用原始套接字,但似乎没有 Java 实现。