2012-04-07 10 views
1

初めてUDPを使用しています。Java 7で受信を呼び出さずにパケットが到着したかどうかを調べる方法があるかどうか疑問です。DatagramSocketデータグラムパケットが着信せずに到着したかどうかを確認するにはどうすればよいですか?

複数のパケットをサーバーに送信できるようにクライアントを設定しようとしています。各パケットの送信後に、サーバーからの応答があるかどうかを確認してください。

今すぐDatagramSocketsetSoTimeoutメソッドを使用して、タイムアウトを1ミリ秒に設定していますが、可能であればすべて待つことはありません。

アップデート:私はjava.nioのパッケージについて学ぶことになったと、これを行うためにそのノンブロッキングAPIを使用することができました

+0

受信に問題がありますか?データグラムソケットをブロッキングモードに設定し、データが到着するとただちにreceiveを返します。 –

+0

UDPは「ベストエフォート」の配信のみであることに注意してください。パケットは送信された順序で配信される必要はありません。パケットにシーケンス番号が含まれていないので、発信パケットを応答と照合することができれば、ドロップされた1つのパケットまたは逆の順序で絶望的に混乱するでしょう。 –

+0

はい私はUDPが何であるかを理解しています。パケットがブロックされずに到着したかどうかを知る方法があるかどうかはわかりません。可能な場合、私はそれをブロックせずに受信(または他の方法)を呼び出すことができるようにしたいと思います。 – user12345613

答えて

1

私自身の質問に答えるのは大丈夫ですが、java.nioパッケージについて学びました。これは非ブロックソケットapiです。

+0

それだけでなく、[奨励されている](http://meta.stackexchange.com/a/16933/175248) – Makoto

+0

私は同じことをしようとしています。これを行うには、java.nioパッケージをどのように使いましたか? – Chris

関連する問題