【发布时间】:2013-01-17 20:01:23
【问题描述】:
我使用TCPClient和NetworkStream通过套接字发送短消息(Modbus帧)。我使用NetworkStream 中的Write() 方法发送数据。
问题是我使用了两次或更多write(),但消息在一个 TCP 帧中发送(通过 Wireshark 检查),对我来说,所有写入的消息都将在其他 TCP 帧中发送是必要的。
有解决这个问题的办法吗?
【问题讨论】:
我使用TCPClient和NetworkStream通过套接字发送短消息(Modbus帧)。我使用NetworkStream 中的Write() 方法发送数据。
问题是我使用了两次或更多write(),但消息在一个 TCP 帧中发送(通过 Wireshark 检查),对我来说,所有写入的消息都将在其他 TCP 帧中发送是必要的。
有解决这个问题的办法吗?
【问题讨论】:
听起来好像 TCP 正在缓冲您的数据以优化性能。您可能希望在两次发送之间设置延迟或禁用 Nagel 算法(使用 SetSocketOption NoDelay true)。
这可能会影响您的 TCP 性能,因此您需要小心何时/何地使用它。
迈克
【讨论】: