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