2017-04-13 84 views
0

我正在从1台计算机发送1个UDP数据包并将其转发给多个主机。我正在使用以下代码来接收,但是我可以使用DatagramPacket来发送数据包,因为它会修改源IP。转发UDP数据包无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()); 
    } 
} 
+0

是否可以使用IP多播作为替代方案? – Mike

+0

@Mike我还没有路由器或交换机来模拟路由器/交换机与服务器? – sean

回答

0

不知道是否有可能在java做的,但如果你以某种方式使之(JNI) - 你将面临更多difficlut问题:你尝试做什么是IP欺骗任何responseble互联网提供商或主机会阻止具有伪造IP地址的数据包。

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