我正在尝试使用私有网络上的UDP广播通过WiFi将多声道音频从一台服务器发送到多台客户端计算机。
我正在使用名为Pure Data的软件,以及名为netsend~和netreceive~的UDP广播工具。代码在这里:http://www.remu.fr/sound-delta/netsend~/
简而言之,我能够在点对点网络中向一台客户端计算机发送9个频道,但当我尝试向2个客户端进行广播时(尚未尝试更多),我得不到声音。我可以压缩音频,并成功地通过UDP广播向2个客户端发送4个压缩的通道(大约10%的未压缩大小)。或者,我可以通过UDP广播向2个客户端发送1个通道,但有一些小故障。
WiFi路由器是Linksys WRT300N。所有计算机都运行Windows XP。IP地址为192.168.1.x,子网掩码为255.255.255.0,子网广播地址为192.168.1.255。
我很好奇-路由器中的UDP广播数据包会发生什么?如果我的子网掩码为255.255.255.0,那么路由器是否会为通过该广播地址发送的每个数据包生成254个数据包?
我的WiFi带宽至少是100 10Mbps,但我似乎不能通过UDP广播向多个客户端发送超过10 10Mbps的音频。
是什么阻止我将音频发送到WiFi的带宽限制?
任何有关修改套接字代码、网络设置、路由器设置、子网修改的建议...所有人都非常感谢!
谢谢,尼克
发布于 2010-12-03 08:40:51
您的问题由接入点的速率控制算法引起。利用单播,接入点跟踪每个特定接收器能够以什么数据速率可靠地接收和发送大约该速率。使用多播,接入点不知道哪些接收器对数据感兴趣,因此简单接入点以最慢的可能速率(1Mb/s)发送数据。实施得更好的接入点可能会以连接速度最慢的客户端使用的速率发送数据,最佳接入点使用IGMP侦听来查看谁在接收每个IP组播流,并且它们会从接收器中为该流选择最慢的速率。
最简单的解决方案是在WiFi接收器数量较少的情况下不使用多播。
发布于 2009-11-30 18:53:00
是否所有各方都通过WiFi连接,或者发送方是否使用有线连接到接入点?广播数据将作为单播数据从站点传输到接入点,然后接入点将以广播/组播流量的形式重新传输数据,因此与发送方位于AP的有线一侧相比,它将使用两倍的广播带宽。
当发送单播帧时,AP将等待来自接收站的ACK,并且它将重新传输帧,直到ACK到达(或超时)。广播/多播帧不是ACKed帧,因此不会重传。如果您有繁忙/嘈杂的无线电环境,这将导致丢弃数据包的可能性增加,与单播流量相比,多播流量可能会增加很多。在音频应用程序中,这肯定是可以听到的。
此外,IIRC广播/多播流量不使用RTS/CTS过程来保留媒体,从而避免了丢弃分组的问题。
实际上,在给定聚合带宽足够高的情况下,在不太理想的无线电条件下,多个单播流可能比单个多播流工作得更好。
如果可以,我建议您使用wireshark来嗅探WiFi流量,并查看802.11报头中的目的地址。然后,您可以验证数据包是否确实是通过无线广播的。
发布于 2010-11-28 12:45:12
由于对WiFi速度的普遍误解,您的设计正在失败。对于802.11n,数字300mb/s是链路速度,而不是可用于用户数据甚至IP层的实际带宽。在最好的情况下,有效带宽接近40mb/s,请查看SmallNetBuilder.com上的常见问题解答,其中详细讨论了这一点。
https://stackoverflow.com/questions/1735952
复制相似问题