为什么只有3.1%的广播数据包到达我的本地网络?

时间:2012-06-18 18:22:29

标签: udp broadcast datagram

我正在编写一个由两个不同程序组成的应用程序。一个(客户端)发送UDP广播数据包,另一个(服务器)记录收到的任何数据包。

应用程序是用Qt编写的 - 我基本上使用UDP Multicast example并将其用于服务器。客户端看起来像这样:

QUdpSocket * socket = new QUdpSocket;
QByteArray datagram("This is a test!");
socket->writeDatagram(datagram.data(), datagram.size(),
                      QHostAddress::Broadcast, 45454);

代码确实有效 - 但非常糟糕。因此很少有数据包到达(我的工作量约为3.1%)。现在我完全理解UDP并不能保证所有的数据包都会在没有任何丢失的情况下到达 - 但3.1%似乎很荒谬,让我想知道我是否做错了。

客户端和服务器都在无法用于其他任何事情的无线网络上运行。我尝试以更慢更快的速度发送数据包,但没有任何区别。

客户端: Ubuntu 11.10 64位
服务器: Ubuntu 12.04 64位


修改:我已将QHostAddress::Broadcast替换为上面示例中的QHostAddress("x.x.x.x")(其中x.x.x.x是服务器的IP地址)没有的数据包被丢弃。所以似乎问题仅限于广播数据包。


进一步编辑:将客户端切换到Windows 7只会导致9%的数据包丢失(91%的数据包到达)。

0 个答案:

没有答案
相关问题