そのため、現在、ポート5004でRTPパケットをリッスンするクライアントアプリケーションに取り組んでいます。RTPパケットを送信するサーバーが複数ある可能性があるため、ソケットを使用して特定のリモートホストに接続することはできません。代わりに、ローカルポートでリッスンするために次のことを試みました。
Socket socket = new Socket("127.0.0.1", 5004);
Socket socket = new Socket("localhost", 5004);
Socket socket = new Socket(InetAddress.getByName("localhost"), 5004);
Socket socket = new Socket(InetAddress.getLocalHost(), 5004);
上記のいずれかが私にこの例外を与えます:
java.net.ConnectException: Connection refused: connect
DatagramSocketも使用してみましたが、DatagramPacketsでは、読み取るパケットのサイズを指定する必要があります。
要約すると、特定のリモートホスト/アドレスに接続せずに、ローカルポート5004でサイズが不明なRTPパケットをリッスンする方法を見つける必要があります。どんな助けでも大歓迎です!
編集:
これで、接続をリッスンするようにServerSocketを設定しましたが、それでもパケットを読み取ることができません。
try { ServerSocket server = new ServerSocket(5004);
Socket s = server.accept();
BufferedReader rtpReader = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true){
int k = rtpReader.read();
if (k == -1) break;
System.out.println(k);
}
}
注:RTPパケットは、マルチキャストアドレスを介して送信されます。
問題はマルチキャストであることが判明しました。ニコライの答えを参照してください。どうもありがとう!