C# 如何分割UDP数据包?

发布于 2024-10-30 19:00:38 字数 338 浏览 2 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

楠木可依 2024-11-06 19:00:38

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.

红墙和绿瓦 2024-11-06 19:00:38

通过 UDP 发送大块数据似乎有点奇怪,因为使用 UDP 数据报不能保证到达另一端。即使它们全部到达,也不能保证它们按照原始顺序排列。您确定要使用 UDP 吗?

塞兰·基廷是对的。 TCP 是满足我需求的更好选择。

Sending a large block of data by UDP seems a little odd, because with UDP the datagrams are not guaranteed to arrive at the other side. And even if they all do arrive they're not guaranteed to be in the original order. Are you sure you want to use UDP?

Ciaran Keating was right. TCP was a better choice for my need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文