【发布时间】:2016-04-06 08:37:41
【问题描述】:
我有一个处理以下结构的消息的 TCP 服务器:
[ Msg. Size (2 Byte) | Msg. Payload (N Byte) ]
流程如下:
- 从 TCP 连接读取 2 个字节以识别负载大小
N。 - 读取
N有效负载字节并对其进行处理。 - 关闭 TCP 连接。
为了减少网络开销,我想搭载多条消息。
[ Msg. Size #1 | Msg. Payload #1 ][ Msg. Size #2 | Msg. Payload #2 ] ...
如果 TCP 读取缓冲区包含更多数据(不为空),则处理循环显然不能关闭 TCP 连接。
有什么方法可以可靠地从 Labview 2013 中检查 TCP 读取缓冲区中是否有更多数据可用?
我可以再次拨打read() 并检查是否超时。但我想避免这种解决方案,因为它会引入不必要的延迟。
在上述处理循环中,使用了标准 Labview TCP VI(例如 TCP Wait On Listener、TCP Read、TCP Write、TCP Close Connection)。
【问题讨论】: