SocketChannelを使用する場合、部分的な書き込みと読み取りを処理するために、読み書きバッファを保持する必要があります。NIO DatagramChannelを使用すると、部分的に読み書きされたパケットを処理する必要がありますか?
私は、DatagramChannelを使用する場合には必要ではないかもしれないという不満を抱いていますが、情報は不足しています。
話は何ですか?
すべての待機中のデータグラムを読み取るためにnullが返されるまで、(非ブロック)receive(ByteBuffer)を繰り返し呼び出す必要がありますか?
非ブロックモードで送信する場合、send(ByteBuffer、SocketAddress)を使用してバッファ全体を送信するか、完全に拒否することができますか、部分的に書き込まれたバッファを保持する必要がありますか?
何について書きますか?送信バッファがいっぱいになっているために部分書き込みが行われるのでしょうか、それともすべてかどうかの問題ですか? – Nuoji
それはまた、すべてかどうかです。データグラムより大きなものを書くと、何が起こるかわかりませんが(例外?)、確かに送信されません。 1つのUDPデータグラムではほぼ64kです。 –
もう1つのカップルノート:データグラムが相手側で配信される保証はありませんが、通常は配信されます。また、WindowsはネットワークのMTUを超えるブロードキャストUDPデータグラムを送信できないようですので、注意してください。 –