初めてUDPを使用しています。Java 7で受信を呼び出さずにパケットが到着したかどうかを調べる方法があるかどうか疑問です。DatagramSocket
データグラムパケットが着信せずに到着したかどうかを確認するにはどうすればよいですか?
複数のパケットをサーバーに送信できるようにクライアントを設定しようとしています。各パケットの送信後に、サーバーからの応答があるかどうかを確認してください。
今すぐDatagramSocket
のsetSoTimeout
メソッドを使用して、タイムアウトを1ミリ秒に設定していますが、可能であればすべて待つことはありません。
アップデート:私はjava.nioのパッケージについて学ぶことになったと、これを行うためにそのノンブロッキングAPIを使用することができました
。
受信に問題がありますか?データグラムソケットをブロッキングモードに設定し、データが到着するとただちにreceiveを返します。 –
UDPは「ベストエフォート」の配信のみであることに注意してください。パケットは送信された順序で配信される必要はありません。パケットにシーケンス番号が含まれていないので、発信パケットを応答と照合することができれば、ドロップされた1つのパケットまたは逆の順序で絶望的に混乱するでしょう。 –
はい私はUDPが何であるかを理解しています。パケットがブロックされずに到着したかどうかを知る方法があるかどうかはわかりません。可能な場合、私はそれをブロックせずに受信(または他の方法)を呼び出すことができるようにしたいと思います。 – user12345613