广播到多个客户端的MulticastSocket与DatagramSocket

bra*_*n56 4 java networking broadcasting

当一个服务器向多个客户端广播时,哪个是更快/更高效的实现:MulticastSocket还是DatagramSocket?

请讨论一下解释,谢谢!

传递的消息涉及字符串和浮点数.

Spl*_*ity 5

决定因素通常是客户端是否在相同或其他多播启用/链接网络上.通常,多播将比任何形式的单播更有效,但是,多播不可靠,并且不能在诸如因特网之类的异构网络中工作,其中运营商倾向于禁用多播流量.

如果数据需要可靠,那么你确实需要使用TCP单播,或者在多播中添加某种形式的FEC,以便为数据流提供可靠性,如果流量需要通过互联网传输,那么你必须使用单播TCP或UDP.

简短版本:如果您的数据很小,需要可靠,遍历互联网或不经常发送,请使用单播.如果您的数据很大,交付给大量客户端,可以容忍一些损失,只能遍历您控制的网络或启用了多播,请使用多播.多播实际上是一个单一的小马,(通过同质网络广播不可靠的数据),而单播可以做任何事情,但具有更高的开销.

注意:超过一定数量的数据丢失的TCP也不再可靠(导致断开连接),并且来自单播的增加的流量可以将该限制降低,因为它会增加数据流量.FEC为即使是非常多的客户端增加了相对固定的开销,但是有一点,FEC和单播都不再有帮助,而您只需要重新设计网络以实现可行的解决方案.