1

そのため、UDP パケットを介してデータを送信する際にタイムアウト値を指定するメソッドが提供されていることがわかります (少なくとも C# で見られました)。UDPはコネクションレスプロトコルであり、送信側ソケットがしなければならないのは、パケットが実際に受信されることを心配せずにパケットを送信するだけだと思っていたので、それが何に使用されるのか疑問に思っていました。受信時にタイムアウトを設定するのは理にかなっていますが、送信時にタイムアウトが必要な理由がわかりません。誰か説明してくれませんか?

UDP 送信ブロックですか? (私はそうは言いません)。はいの場合、どのようなものが「ブロック」されますか?

前もって感謝します。

4

1 に答える 1

5

どちらの質問も同じ答えです。send()データグラムをソケット送信バッファーにコピーするだけで、バックグラウンドで OS によってネットワークに送信されます。バッファがいっぱいになると、ブロックされます。UDP の場合、OS がデータグラムをネットワークに書き込むよりも速くデータグラムを送信すると、バッファがいっぱいになることがあります。

ソケットは、TCP か UDP かに関係なく、ブロック (デフォルト) または非ブロックのいずれかになります。

于 2013-11-01T23:16:06.483 に答える