私はJavaで基本的なデータグラムのクライアント/サーバプログラムを作ろうとしています。インターネット経由でデータグラムパケットを送る方法は?
ローカルコンピュータのポート9321にサーバーを固定しました。
ローカルコンピュータのポート9320でクライアントを作成した後、 ワイヤレスルーターネットワーク(192.168.1.100)でポート9321でデータを送信します プログラムが動作します!
私はポート9321 で(ルータ経由で)インターネットIP 139.195.12.183(私のIP)を介してパケットを送信しようとしましたが、それは動作しませんでした! この例外があります:
java.net.SocketException: Interrupted function call: Datagram send failed
私は自分のコンピュータ にポート9321のためのすべての要求を転送するようにルータを設定しましたし、私はそのポートで自分のコンピュータ上で
をファイアウォールの例外を設定しました
:これは私がそれを言った別のフォーラムから別の答えを持っていたString SERVER = "139.195.12.183"; sendString(SERVER, 9321, "Greetings"); << private void sendString(String IP, int port, String toSend) { byte[] buf = toSend.getBytes(); DatagramPacket packet = null; try { packet = new DatagramPacket(buf, buf.length, InetAddress.getByName(SERVER), port); ds.send(packet);<< }catch(UnknownHostException e) { System.out.println("unknownhostception"); }catch(IOException e) { System.err.println("ioception "+e.getMessage()); } }
源であります
"ルータの動作方法は、 内部ネットワーク(LAN)から外部(WAN)インターネットアドレスを見ることができません。それがあなたがしようとしているものなら、間違ったことはありません。 はうまくいきません。
イアン「
任意の説明あなたが取ることができ
グローバルネットワーク==インターネットを明確にするだけですか?あなたのローカルPCには公開されているIPアドレスがあります(上記のIPアドレスはキャリアに属しています)。 – home
ああ私はインターネットを意味します。 プライベートネットワークが私のルーターです。 –
IPデータグラムを使用する場合、常にそのTTLについて考えてください。 – ecle