在.NET中,网络流中有DataAvailable属性,tcp客户端中有Available属性 然而,银光缺乏那些。 我应该发送一个带有消息长度的标题吗?我宁愿不浪费网络资源 还有其他办法吗?
答案 0 :(得分:1)
您正在进行微观优化。为什么你认为另外4个字节会影响性能?
换句话说:使用长度标题。
我看到你对另一个答案的评论。您以错误的方式使用BeginRead
。它永远不会阻塞或等待整个缓冲区被填满。
您应该声明一个可以接收整个邮件的缓冲区。 EndRead
的返回值将报告接收的字节数。
您还应该知道TCP是基于流的。有 没有 保证您将立即收到整个JSON消息(或者只接收您的第一封消息)。因此,您必须有某种方式来了解消息何时完成。
我再说一遍:长度标题几乎不会影响性能。
答案 1 :(得分:0)
'废弃网络资源'是什么意思?我所知道的每个网络读取API都会以某种方式返回读取的实际字节数。这里的实际问题是什么?