- "connect"と呼ばれる非ブロックUDPソケットでデータを送信するには、 "select/epoll/kqueue"を使用して書き込み可能かどうかをテストする必要があります?その場合、相手側のrecvバッファがいっぱいです。 "send"が失敗する可能性があるので、 "send"が成功を返すように書き込み可能であることをテストするために "select"を使用できますか? それはデータを送信するだけで、サイドのrecv buffがいっぱいかどうか気にしないので、不要です。それが本当であれば、「送信」は相手側がダウンしていない限り成功を返すだけでしょうか?
- UDPソケットの場合、 "send"の戻り値は何ですか?たとえば、100バイトを送信します。-1(エラー)または100以外の値を返します。 TCPの場合と50 ~~~~
0
A
答えて
1
を返すことがあり、他の側のrecvバッファがいっぱいになる、失敗することがあり、「送信」ので、私は それが書き込み可能だことをテストするために「選択」を使用することができますように"send"は を返す可能性がありますか?
あなたはUDPを使用しています。パケットが送信され、受信バッファが受信側でいっぱいになると、受信側のシステムはそれを破棄します。これを読む:https://en.wikipedia.org/wiki/User_Datagram_Protocol#Reliability_and_congestion_control_solutions
send()
コールの結果は、受信機の状態に完全に依存しません。受信側が存在しなくても成功します。
UDPは、基礎となるネットワークのパケットサイズより大きいデータグラムの処理方法のためにこれを参照してください:一般的にUDP Sockets on Linux; send successfully but unable to receive large buffer
0
を、send()
をブロックし、常に書き込まれたバイト数を返さないで、ローカル(送信)バッファがない限り、カーネルがいっぱいです。基本的に決して起こらないUDPソケットの場合。あなたが速く書くか、受信側が処理できるなら、起こるTCPソケットのために。
関連する問題
- 1. 送信データUDP C#
- 2. C#のUDPソケット?
- 3. CノンブロッキングUDPソケット
- 4. UDP - Rawソケット - C#
- 5. C++ UDPブロードキャストを送信
- 6. ソケットC/C++でfloat値を送信
- 7. UDPパケットの送受信に関するヘルプ - Cソケット
- 8. C#ソケット(TCPとUDP)
- 9. UDP LabVIEWを使用してUDP C++ソケットと通信する
- 10. UDPソケットでアンドロイドセンサーデータを送信する
- 11. UDPソケットで大きなデータを送信
- 12. Udpソケット安定送信、バースト受信
- 13. C言語でUDP UNIXソケットを介して構造体を送信
- 14. cでUDPソケットの送信元ポートを設定する方法は?
- 15. cソケット経由で画像を送信
- 16. UDPソケットのクローズ/アンバインドC#
- 17. 時間計測UDPソケットC
- 18. CでUDPソケット上のファイルを転送しています! Linux
- 19. C#UDPソケットがメッセージを受信できません
- 20. UDPソケット(C++)でデータを誤って受信しました
- 21. UDPブロードキャストをPHPから送信し、C#で受信する
- 22. C/C++のソケットで複数のメッセージを送信する
- 23. Cソケット:recvと同時に送信
- 24. メッセージは送信しません:Cソケット
- 25. C#ソケット送信文字列変換
- 26. PHPソケットUDP通信
- 27. Objective-CおよびCリファレンスヘルプ
- 28. C#UDPソケットが不明なIP
- 29. C UDPソケットが動作しない
- 30. C#ソケットはデータを受信して再び送受信します
UDPはコネクションレスです。送信者は、パケットが受信者に送信されたかどうかはまったく分かりません。受信したかどうか、またはバッファがいっぱいだったかどうかはほとんど分かりません。 –