Java で基本的なデータグラム クライアント/サーバー プログラムを作成しようとしています。
サーバーをローカル コンピューターのポート 9321 に固定しました。
ローカル コンピューターのポート 9320 でクライアントを作成し、ポート 9321 でワイヤレス ルーター ネットワーク (192.168.1.100) を介してデータを送信すると、プログラムが動作します。
次に、ポート 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) インターネットアドレスを見ることはできません。それがあなたがやろうとしていることであるなら、何も問題はありません。うまくいかないだけです。
イアン。"
説明はありますか?