通过NetworkStream一次发送的最小保证字节数

时间:2010-11-20 16:49:54

标签: c# .net tcp networkstream

我正在使用TcpClient的NetworkStream将字节从.NET服务器发送到通过Socket接收它们的Silverlight客户端。从客户端发送是通过Socket.SendAsync完成的。

我的问题是,双方都可以“一次性”接收的最小字节数是多少,而不需要发送消息长度并自己将几个字节消息放在一起。

谢谢, 安德烈

2 个答案:

答案 0 :(得分:4)

你绝对应该发送消息长度。网络流正是信息的。基本上有三种方法可以识别消息的结束:

  • 使用长度对数据进行前缀(不要忘记,理论上至少可以在一个数据包中获取所有长度数据)
  • 使用消息分隔符/终止符
  • 每个连接只发送一条消息,然后关闭连接

答案 1 :(得分:3)

这取决于您的网络设置,但网络节点的默认长度为1500字节,大多数调制解调器取消了这一点。因此大多数家庭的数据包大小为1460字节。

您的情况的最佳尺寸可以是calculated

但人们总是可以拥有自己的设置,因此无法保证为所有客户端获得最佳的数据包大小。