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

时间:2020-05-30 11:28:13

标签: java networking udp

我想在计算机上模拟网络。 我想用不同的IP地址发送每个数据包。 如何在套接字上设置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”中输入什么?

1 个答案:

答案 0 :(得分:1)

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

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

如果要模拟程序中具有不同的IP地址,则需要模拟IP。那将涉及使用原始套接字,但是似乎没有Java实现。