Java中的DatagramSocketImpl有一个joinGroup方法,它接受套接字地址(IP和端口)加上接口地址(IP和端口)。我试图了解多播堆栈中这三个地址的不同之处和用途:
我很困惑:我不知道绑定地址和接口地址之间的区别。另外,我不确定多播地址是否真的需要一个端口。我可以将多播地址的IP称为组播地址组吗?
发布于 2012-02-27 00:07:25
实际上这里有三种方法混在一起。第一个是bind,用于将套接字绑定到指定的地址和端口。使用此方法,您基本上可以打开一个udp端口,并等待该地址上的该端口的数据。第二种是连接方法,它用于让套接字加入指定的多播组。多播组的一个例子是224.0.0.1 --“所有主机”多播组--它处理同一网段上的所有主机。第三种方法是joinGroup,它允许套接字在指定的网络接口上加入指定的多播组。如您所见,方法二和方法三用于IP多播,方法一用于UDP (不一定与多播相结合)。通过加入多播组,套接字能够接收使用IP多播发送的数据报。当然,两者都可以结合在一起,例如,使用多播接收数据,如果有必要,可以使用多播(如果数据对组中的所有主机都感兴趣)或直接对发送方(如果数据只对发送方感兴趣)进行应答。
https://serverfault.com/questions/363436
复制相似问题