在没有ip更改的情况下转发UDP数据包

时间:2017-04-13 13:19:24

标签: java networking

我正在努力从1台计算机发送1个UDP数据包并将其转发给多个主机。我使用以下代码接收但是我可以使用DatagramPacket发送数据包,因为它将修改源IP。

是否有一种方法或工具可以让我这样做?我正在使用Windows环境。感谢。

public class app{

    public static void main(String[] args) throws UnknownHostException, SocketException, IOException  {
        // TODO code application logic here
        byte[] buffer = {10,23,12,31,43,32,24};
        byte [] IP={-64,-88,1,106};
        InetAddress address = InetAddress.getByAddress(IP);
        DatagramPacket packet = new DatagramPacket(
                buffer, buffer.length, address, 57
                );
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.send(packet);
        System.out.println(InetAddress.getLocalHost().getHostAddress());
    }
}

1 个答案:

答案 0 :(得分:0)

不确定是否可以用java做,但如果你以某种方式做到(jni) - 你将面临更多困难问题:你试图做的是ip-spoofing和任何可响应的互联网提供商或托管商将阻止伪造ip-addresses的数据包。

考虑使用多播或不尝试伪造您发送的数据包的源IP。