【发布时间】:2014-06-18 16:41:33
【问题描述】:
我设计了一个系统,在该系统中我使用 UDP 向连接到同一接入点的一些客户端发送广播消息。我正在使用接入点连接服务器和所有其他客户端。问题在于广播。当我向客户端广播一条 800 字节的消息时,接收是完全随机的。有时客户端能够获取消息,有时则不能。我尝试多次广播它,以便至少有一个通过并到达所有客户。但即使这样有时也不起作用。为什么数据包会被丢弃?数据包大小有问题吗?我应该如何使它可靠?哪些因素可能导致这种情况? 我有 40-50 个客户端连接到 AP。接入点专门用于此应用程序,并且没有互联网连接。
【问题讨论】:
-
UDP 本质上是一种不可靠的协议,但它比平时更不可靠可能是有原因的。你有一些关于实际掉率的统计数据吗?
-
我没有任何统计数据。但它是如此随机。数据报大小会影响丢弃率吗?
-
可能是的,尽管 800 字节非常小。如果没有关于掉率的统计数据,就无法确定您的损失是预期的还是异常的。无线链路的损耗相当大,但 TCP 等协议将弥补这一点。 UDP 就是一劳永逸。
-
这样你不会获得绝对的可靠性,但可以肯定的是,如果在这种情况下你的掉率合适,那是一种方法。否则你需要在你的协议中进行某种确认,或者只做 TCP。
-
通过 WiFi 进行广播(和多播)根本无法正常工作:superuser.com/questions/695813/…
标签: sockets networking network-programming udp broadcast