こんにちは、私は/ recvメッセージを送信するためにTCP接続を使用します。質問は、私は多くのメッセージを送信し、待ち時間を測定したいです。したがって、私はすべてのメッセージが送信された後に受信したくない。しかし、私が時間内に入ってくるメッセージを処理しなければ、プログラムは予期せぬ結果を得ます。 msgを送信するプログラムをブロックせずにrecv()を処理できる方法はありますか? コメントをいただければ幸いです。tcpメッセージ通信
1
A
答えて
2
TCPを使用した測定レイテンシは、TCPが必然的ににはのレイテンシ(Nagle's algorithmを参照)を導入するため、最適ではない可能性があります。 TCPはバイトストリームとして解釈され、「メッセージ」という概念も明確に定義されていません。
ソケットをnon-blockingに設定すると、データがない場合にすぐにrecv()
が返されます。ポーリングでCPUを無駄にしたくない場合は、代わりにselect()
を使用して、ソケットに読み取り可能なデータがあるかどうかを検出できます。
0
select()
を使用して、受信データが利用可能かどうかをテストできます。
0
私がここで言及していない1つのオプションは、受信のためにスピアスレッドを使用することです。そうすれば、他のスレッドの送信ロジックに干渉することなく、単純なダムブロック待機を行うことができます。
関連する問題
- 1. Perl TCPソケット通信
- 2. TCPソケット通信の問題
- 3. Indy TCP通信と改行
- 4. TCP/IP通信のテストツール
- 5. WCF duplex TCP通信エラー
- 6. TCPソケット通信Java - Python
- 7. Tornado TCPサーバー/クライアントプロセス通信
- 8. TCPストリームでのメッセージの送信
- 9. TCP通信は双方向通信ですか?
- 10. TCP HTTPクライアントとサーバのソケット通信
- 11. Apache MINA Java TCPクライアント - サーバ通信
- 12. CクライアントのTCPサーバとjava通信
- 13. TCPロールワーカーロールからWebロールへの通信
- 14. クライアントとサーバー間のTCP通信
- 15. Tcpクライアント双方向通信ヘルプ
- 16. ネットワークアクセス変換(NAT)とTCP通信
- 17. ファイアウォールでTCP通信が停止する
- 18. Swift iOSとJavaソケット間のTCP通信
- 19. phpとc#tcp通信の問題
- 20. python TCP通信スレッド、遅延、エラー
- 21. Java tcpクライアントの実行方法<-> Qt tcpサーバソケット通信
- 22. 再組み立てされたTCPセグメントの回避 "Modbus TCP通信"
- 23. 戦略パターンとAndroidサービス/ UIメッセージ通信
- 24. パイソン - ソケット通信、複数のメッセージ
- 25. TCPでメッセージを送信する方法はどれですか?
- 26. Android TCPクライアントはメッセージとbmpを受信します
- 27. TCPクライアント/サーバーのメッセージが正しく送信されない
- 28. action-on-googleはサーバにtcp/ipメッセージを送信します
- 29. SwiftSocket:複数のTCPメッセージを送信できません
- 30. Pythonで区切られたProtobufメッセージをTCP経由で受信
+1。 UDPはここでより良い選択となるでしょう。おそらく、OQは単に「ソケット」の同義語として「TCP」を使用していました。 –
お返事ありがとうございます。特にtcp接続のレイテンシを測定しています。 – leo