Boost asio を使用して TCP メッセージを送信しています。これは「リアルタイム」制御システムであるため、NO_DELAY オプションを設定します。Wireshark を使用して、メッセージに PSH フラグが設定されていることがわかります。パフォーマンスに満足しており、期待どおりに機能しています。
興味を引くために、NO_DELAY をオフにして、パフォーマンスの違いを測定することにしました。
既存のコードを交換しました:
m_tcpSocket.open(boost::asio::ip::tcp::v4());
boost::asio::ip::tcp::no_delay noDelayOption(true);
m_tcpSocket.set_option(noDelayOption);
// snip create endpoint
m_tcpSocket.connect(m_tcpServerEndpoint);
// snip build message
m_tcpSocket.send(boost::asio::buffer(pDataBuffer, size));
為に
boost::asio::ip::tcp::no_delay noDelayOption(false);
m_tcpSocket.set_option(noDelayOption);
PSH フラグが設定されたままです。
set_option コードも削除しようとしましたが、まだ設定されています。
Wireshark では次のように表示されます。
104 - 105 SYN
105 - 104 SYN, ACK
104 - 105 ACK
104 - 105 PSH, ACK + my message
105 - 104 ACK
ここで、104 と 105 は私の 2 台の PC の IP アドレスです。私のデータを含むメッセージに ACK があることにも驚きました。
NO_DELAY をオフにするにはどうすればよいですか?