1

マルチキャストグループへの接続、参加、送信、およびデータの受信のプロセスを簡素化するために、Java でクラスを作成しています。この時点で、receive()Java のMulticastSocketクラスのメソッドに問題があります。この方法を使用すると、データが受信されるまでプログラム全体が停止します。

特定の期間、たとえば 5 秒間だけリッスンできる方法があるかどうかを知りたいですか?

これは、私がやっていることの非常に基本的なコード サンプルです。例外のキャッチ、インポートステートメントなどを除いて、実際のコードとはまったく似ていないことに注意してください... Javaのマルチキャスト機能をどのように活用するかについて、クラスの基本的なフローを示しているだけです。

//Connect to the multicast host, and join the group
  MulticastSocket msConn = new MulticastSocket(5540);
  InetAddress netAddr = InetAddress.getByName("239.255.255.255");
  msConn.joinGroup(netAddr);

//Preapre a datagram packet in which to place recieved data
  byte buf[] = new byte[1024];
  DatagramPacket pack = new DatagramPacket(buf, buf.length);

//PROBLEM: Code halts here until data is recieved
//Accoding the the Java Docs it says that
//"This method blocks until a datagram is received."
  msConn.recieve(pack);

お時間をいただきありがとうございます。

4

1 に答える 1

3

このメソッドを使用しsetSoTimeout()て、データグラムを受信するためのタイムアウトを設定します。次に、のドキュメントに従って、タイムアウトが経過recieve()するとaがスローさSocketTimeoutExceptionれ、プログラムを続行できるようになります。

于 2011-12-08T20:50:00.163 に答える