如何找出我应该从套接字读取多少?

时间:2011-05-19 10:06:29

标签: silverlight sockets network-programming

在.NET中,网络流中有DataAvailable属性,tcp客户端中有Available属性 然而,银光缺乏那些。 我应该发送一个带有消息长度的标题吗?我宁愿不浪费网络资源 还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

您正在进行微观优化。为什么你认为另外4个字节会影响性能?

换句话说:使用长度标题。

更新

我看到你对另一个答案的评论。您以错误的方式使用BeginRead。它永远不会阻塞或等待整个缓冲区被填满。

您应该声明一个可以接收整个邮件的缓冲区。 EndRead的返回值将报告接收的字节数。

您还应该知道TCP是基于流的。有 没有 保证您将立即收到整个JSON消息(或者只接收您的第一封消息)。因此,您必须有某种方式来了解消息何时完成。

我再说一遍:长度标题几乎不会影响性能。

答案 1 :(得分:0)

'废弃网络资源'是什么意思?我所知道的每个网络读取API都会以某种方式返回读取的实际字节数。这里的实际问题是什么?