C# 如何分割UDP数据包?
我正在使用 UdpClient 类发送数据包。
似乎每个数据包的大小都有限制,因为大数据包永远不会到达目的地。我尝试减小数据包大小,以便数据包能够到达目的地。我在某处读到“标准”数据包大小限制为 512 字节。
但我仍然需要发送远大于 512 字节的对象。
所以我的问题是:.NET 中是否有一种内置方法可以将字节数组分割成更小的数据包。显然,我也需要在之后重新组装分割的数据包。
我看到了Socket类中的SendFile方法,我猜应该可以自动分割大文件。但该方法不允许输入字节数组(仅限文件名)。因此,它仅适用于发送存储在硬盘上的数据,不适用于内存中的数据。
I'm using the UdpClient class to send packets.
It seems that there's a per-packet size limit, since big packets never reach their destination. I tried to lower the packet size, which allows the packets to reach their destination. I read somewhere that the "standard" packet size limit is 512 bytes.
But I still need to send objects that are way larger than 512 bytes.
So my question is: is there a built-in way in .NET to split up a byte array into smaller packets. Obviously, I need to reassemble the split packets afterwards, too.
I saw the SendFile method in the Socket class, which I guess should be able to automatically split up big files. But the method doesn't allow byte array input (only file name). So it would only work for sending data that is stored on the hard drive, not for in-memory data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Socket 类中的 Send 函数采用字节数组作为参数。
http://msdn.microsoft.com/en-us/library/w93yy28a.aspx
你可以试试这个。
The Send function in the Socket class takes a byte array as a parameter.
http://msdn.microsoft.com/en-us/library/w93yy28a.aspx
You can try this instead.
塞兰·基廷是对的。 TCP 是满足我需求的更好选择。
Ciaran Keating was right. TCP was a better choice for my need.