首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我无法获取所有的UDP数据包?

为什么我无法获取所有的UDP数据包?
EN

Stack Overflow用户
提问于 2010-03-09 00:45:34
回答 3查看 2.1K关注 0票数 4

我的程序使用UdpClient尝试接收来自27台主机的27个响应。响应的大小为10KB。我的宽带传入带宽是150KB/s。

这27个响应几乎同时且每10秒从主机发送一次。

但是,我每次只能收到8- 17个回复。我可以接收的响应数量是非常动态的,但在范围内。

有人能告诉我为什么吗?为什么我不能全部收到?

我知道UDP是不可靠的。但是我试着同时收到5- 10个回复,它起作用了。我猜网络连接不是那么糟糕。

代码非常简单。在27台主机上,我只使用UdpClient将10KB发送到我的机器。

在我的机器上,我有一个UdpClient接收数据报。每次我得到一个数据,我都会创建一个线程来处理它(基本上处理它意味着只打印出“我收到了10KB",但它是在一个线程中运行的)。

代码语言:javascript
运行
复制
listener = new UDPListener(Port);
listener.Start();
while (true) {
    try {
        UDPContext context = listener.Accept();
        ThreadPool.QueueUserWorkItem(new WaitCallback(HandleMessage), context);

    } catch (Exception) { }
}

如果我将响应的大小减少到3KB,情况会变得更好,可以收到大约25个响应。

还有更多的想法吗?UDP缓冲区问题?

EN

Stack Overflow用户

回答已采纳

发布于 2010-03-09 00:50:10

正如您自己所说,UDP是不可靠的。因此,数据包很可能会在某处被丢弃。

请注意,由于交换机/路由器/网卡过载而导致数据包丢失的原因与链路损坏的原因一样多。如果有人“同时”给你发送了27个10Kb的回复。很可能是您的网卡或附近交换机的缓冲区已满,数据包被丢弃。

在您有一些代码可供展示之前,可能没有什么可说的了。

票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2402944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档