2017-08-04 51 views
0

通信にUDPソケットを使用したコードがあります。このコードでは、アプリケーションは特定のサーバー(特定のホスト名とポートで識別される)にパケットを送信しています。このコードは大きなコードベースから抽出されたものです。IOExceptionネットワークに到達できません

データグラムソケットで送信呼び出し中しかし、私は我々の場合には、次の例外を取得しています
 class Test { 
      private static int UDP_PORT_NUMBER=15000; 

    public static void main(String args[]) { 
     String host = “192.168.2.10”; 
     byte[] bytes = {(byte)0xd1, 0x35, (byte)0x39, (byte)0xea, (byte)0xa2, (byte)0xd8}; 
     DatagramSocket datagramSocket = new DatagramSocket(); 
       final InetAddress inetAddress = InetAddress.getByName(host); 
       final DatagramPacket sendPacket = new DatagramPacket(bytes, bytes.length, 
         inetAddress, UDP_PORT_NUMBER); 
       datagramSocket.send(sendPacket); 
    } 
     } 

:ネットワークの意味はUDPで到達不能である何

java.io.IOException: Network is unreachable 
     at java.net.PlainDatagramSocketImpl.send(Native Method) ~[?:1.8.0_91] 
     at java.net.DatagramSocket.send(DatagramSocket.java:693) ~[?:1.8.0_91] 

とどのようにそれがあるUDPのために検出され得るんコネクションレス? UDPソケットでネットワーク到達不能なIOExceptionを取得できるケースは何ですか?

+1

Imo _network unreachable_は、OSIモデルのレイヤ3で発生するUDPまたはTCPとは関係ありません。要求されたIPアドレスへのルートは存在しません。 – Matt

+0

これを実行するマシンのIPアドレスが何であるかを知ることは役に立ちます。 – RealSkeptic

+0

第1ステップ - あなたはアドレスにpingできますか? –

答えて

1

ネットワーク到達不能メッセージはICMPメッセージです。ホストが別のネットワーク上の別のホストに到達しようとすると、レイヤ3パケットが設定されたゲートウェイに送信されます。ゲートウェイ(または経路内のルータ)が他のネットワークに到達する方法を知らない場合、ICMPメッセージを生成してホストに返信します。

関連する問題