2017-04-13 132 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地址。