我想檢查一個遠程主機服務器是否接受特定端口上的UDP數據包。使用SocketServer,我可以建立一個TCP/IP連接並且工作,但我必須使用UDP。我沒有得到來自DatagramPacket與Java的響應
DatagramSocket ds;
DatagramPacket dp;
byte[] bytes = new byte[32];
InetAddress IAddress = new InetAddress.getByName("86.55.X.X");
ds = new DatagramSocket();
ds.setSoTimeout(100);
ds.connect(IAddress, 1122);
ds.send(dp);
ds.isConnected();
dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
ds.close();
它上面的代碼應該工作,我不知道如何測試它,因爲我沒有找到任何主機/軟其中/在那裏我可以運行/測試上面的代碼。我試圖在遠程主機上測試它。遠程主機禁用了Windows操作系統和防火牆。它有一個路由器,防火牆也被禁用。我可以訪問遠程服務器並在路由器中進行更改。我的問題是:如果只有打開的端口用於TCP/IP,遠程主機是否可以接受UDP數據包? (端口向前)。 在路由器控制面板中,我可以使TCP/IP端口轉發。
使用測試吧'localhost'(127.0.0.1),這是你自己的電腦。您可以使用[Wireshark](http://www.wireshark.org/)來檢查網絡活動。 UDP是TCP/IP協議棧的一部分。 – m0skit0
你在服務器上發生了什麼錯誤。我不認爲你需要使用連接()的UDP套接字..爲什麼你不能只使用發送(數據包).. – UDPLover
如果你的場景是與NAT,遠程服務器後面的路由器/ NAT(與私人IP -10。*/172.xx。*/192.168。*),並且您沒有端口轉發UDP端口....無法工作。 – ggrandes