【问题标题】:Java set different IP address on DatagramSocketJava在DatagramSocket上设置不同的IP地址
【发布时间】:2020-05-30 11:28:13
【问题描述】:

我想在我的电脑上模拟一个网络。 我想用不同的 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”中输入什么?

【问题讨论】:

    标签: java networking udp


    【解决方案1】:

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

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

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

    【讨论】:

    • 在DatagramSocket类中,DatagramSocket的首字母是DatagramSocket(int port, InetAddress laddr)。 “InetAddress”是 IP 地址吗?如果我想把“192.168.1.1”放在那里。我该怎么办?
    • 那是你想绑定socket的接口——接口由它的IP地址来标识。您只能选择现有接口(默认为“全部”)。在 Linux 上,“ifconfig”列出了您的接口;在 Windows 上是“ipconfig”。要创建 InetAddress,请参阅 documentation page - 此处列出的选项太多。
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多