1

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

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

谢谢,安德烈

4

2 回答 2

4

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

  • 为数据加上长度前缀(不要忘记,至少理论上有可能你甚至不会在一个数据包中获得所有长度数据)
  • 使用消息分隔符/终止符
  • 每个连接只发送一条消息,然后关闭连接
于 2010-11-20T17:28:50.910 回答
3

这取决于您的网络设置,但网络节点的默认长度是 1500 字节,大多数调制解调器都会取消它。所以大多数家庭都有 1460 字节的数据包大小。

可以计算出适合您情况的最佳尺寸

但是人们总是可以有自己的设置,所以不能保证你得到所有客户端的最佳数据包大小。

于 2010-11-20T16:56:53.983 回答