1

リモート ホスト サーバーの 1 つが特定のポートで UDP パケットを受け入れるかどうかを確認したいと考えています。SocketServer を使用すると、TCP/IP 接続をセットアップして機能しましたが、UDP を使用する必要があります。

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 OS とファイアウォールが無効になっています。ルーターがあり、ファイアウォールも無効になっています。リモートサーバーにアクセスして、ルーターに変更を加えることができます。私の質問は: 開いているポートが TCP/IP 用のみの場合、リモート ホストは UDP パケットを受け入れることができますか? (ポート転送)。ルーターのコントロール パネルで、TCP/IP に対してのみポート転送を行うことができます。

4

2 に答える 2

1

必ず試着してくださいlocalhost(localhost何かを受信したときに何が起こっているかについて、ソフトウェアを簡単にデバッグできます)。

DatagramSocketさらに、パケットを受信するためにポートにバインドする必要があります。DatagramSocketまた、送信時に を接続する必要はありません。

于 2013-01-20T16:55:33.647 に答える
0

次の変数を JRE に渡す必要があります。

java -Djava.net.preferIPv4Stack=true  ...
于 2013-01-20T19:06:39.270 に答える