2017-08-31 4 views
1

JavaのX-Plane 12からUDPストリームを読み込もうとしています。 これは私がしようとするものである:X-Planeからデータを取得するためのJava(Android)のUDPクライアント12

public class EchoClient { 
@Test 
public void echo() throws IOException { 
    DatagramSocket socket; 
    InetAddress address; 

    byte[] buf; 
    socket = new DatagramSocket(); 
    address = InetAddress.getByName("localhost"); 
    String msg = "TEST"; 
    buf = msg.getBytes(); 
    DatagramPacket packet 
      = new DatagramPacket(buf, buf.length, address, 49000); 
    socket.send(packet); 
    packet = new DatagramPacket(buf, buf.length); 
    System.out.println("hi there"); 
    while(true) { 
     socket.receive(packet); // it "stops" here... without an error 
     String received = new String(
       packet.getData(), 0, packet.getLength()); 
     System.out.println(received); 
    } 
}} 

Xプレーンが実行されているとUDPオプションがアクティブになっている - しかし、私のプログラムは、コンソール上に印刷何もしない...それは(しばらく真)永遠runnigさ

答えて

0

受信はブロックされ、パケットの受信を待っています。先に送ったパケットは、誰も聞いていないので、床に落とされます。

+0

なぜブロックされていますか? X-Planeが動作していて、UDPソケットがポート49000上で動作しています - パケットがドロップされていますか? O_o durka durkを落とさないでください!どこに問題がありますか? – Suisse

+0

センドは受信前に発生します。誰にも送ることはできません。 新しいスレッドにlisten whileループを入れてみてください。これはsocket.send()を呼び出す前に初期化されています。 –

関連する問題