私はエッジトリガepoll
プログラミングを学ぶためにしようとしてきました。それは同様EAGAIN
を返すまで、それは私がすべきrecvfrom
以上のループを意味するの - 私はそれがUDPソケットに来るとき、それはEAGAIN
を返すまでepoll_wait
後に1がrecv
以上のループがすべきかについて少しについて混乱していますか?もしそうなら、アプリケーションが受信したバイト数よりも少ないバイト数を読み込もうとしている場合に備えて、UDPパケットをバッファリングする必要があります。しかし、私がループするとrecvfrom
が出る可能性もあります。異なるソースから複数のパケットが届く可能性があります。sockaddr
もバッファリングしなければならない可能性があります。これは本当ですか?エッジ・トリガファイルディスクリプタとUDPののrecvfrom()
0
A
答えて
2
- はい、
EAGAIN
=EWOULDBLOCK
が発生するまでループする必要があります。これを達成するには、このソケット記述子にO_NONBLOCKを設定する必要があります。 - UDPパケットの一部を受信できません。
- 次回はイベントループに戻り、そのソケットから受信することができますが、
EAGAIN
で終わらないパケットがソケットで受信されたときにカーネルがepol_wait
を起動させないことに注意してください。 - EAGAINまでループしながら、
reader starvation
を防ぐために、あなたは100個のパケットを受信したときに、たとえば、このFDに受信が完了していないという情報を保存しなければならないことを忘れないでください。その後、別のFDを試す必要があります。イベントループに戻るには、保存された情報を分析し、未受信パケットを受信しようとします。 - 私はあなたについて
sockaddr
を言ってみてください何を理解していません。 1で
+0
for(4)、私はrecvfromでループすれば、2つの異なる送信元アドレスから2パケットを受信することはできないでしょうか?したがって、上記のアプリケーションが1パケットを受け取るのを待っていて、ループするとrecvfromから2つのパケットが得られた場合、アプリケーションが別のパケットを受信するまで2番目のパケットをバッファリングする必要があります。 – atanamir
+0
@atanamirはい、可能です。 'recvfrom()'を使います。受信した直後にパケットを処理し、次に第2のパケットを受信することができます。または、いくつかの基準まですべてのパケットをバッファリングすることができます。あなたのプログラムをどのように消滅させるかはあなた次第です。 – socketpair
関連する問題
- 1. C++ udp recvfrom reduce drops
- 2. Python UDP recvfrom()特定のアドレス
- 3. UDP recv/recvfrom複数の送信者
- 4. UDPソケットプログラミング - のrecvfrom()1ポートとのsendto()他のポート
- 5. ソケットUDP-プログラムがrecvfromで停止する
- 6. CでのUDPソケットプログラミング、recvfrom()の呼び出し後にprintfが動作しない?
- 7. UDP(ユニキャストクライアント)recvfrom()はsendto()以外の他のサーバーを使用できますか?
- 8. 任意のrecvfromまで特定のクライアントにデータを送信するudpサーバー
- 9. なぜrecvfromは0.0.0.0のIPアドレスをUDPメッセージに保存しますか?
- 10. C++ UDP。 recvfrom()がブロックしていないのはなぜですか?
- 11. のrecvfrom()のタイムアウト()
- 12. C++ winsock recvfrom()とsendto()
- 13. セグメンテーションフォールトのrecvfromアセンブリ
- 14. iPhone UDP recvfromを使用してデータを受信できません
- 15. WindowsでCのrecvfrom関数がMinGWを使用しているときにUDPデータをスキップします
- 16. Pythonソケットrecvfrom()overtime?
- 17. TCPとUDPのスループット
- 18. GraphvizとDotでエッジを指すエッジ
- 19. winsock recvfromのタイムアウトを設定する
- 20. vis.jsハイパーリンクとエッジ
- 21. はIEとエッジ
- 22. 3Gとエッジの判断
- 23. 左余白と、ブラウザのエッジ
- 24. 頂点とエッジのモデルスキーマ
- 25. UDPとSSLストリーム
- 26. ストリームとUDP
- 27. PIC32イーサネットキットとUDP
- 28. UDPとポートのランダム化
- 29. iptablesフィルタリングのパフォーマンス:TCPとUDP
- 30. DelphiのUDPサーバーとクライアント
あまりにも多くの質問。 – socketpair
UDPソケットのrecvfrom()は正確に1(または、呼び出しに失敗した場合は0)パケットを与えます。パケット全体に空き容量を与えないと、余分なバイトは永久に失われます。 – nos