一、组播编程步骤
1、接收方
(1) new一个UDP socket对象
(2)把socket bind到指定的IP: 端口号,因为本机会有多个IP,我们选择到底把哪个IP加入组播,如果想把本机所有的IP都加入组播,可bind这个IP:QHostAddress::AnyIPv4。
(3)加入到组播IP,函数为 joinMulticastGroup
(4)可随时退出该组播IP,函数为leaveMulticastGroup
2、发送方
与点对点的UDP编程步骤完全相同,不同之处只有一点:目标IP改成组播地址,端口号还是保持点对点的端口号。
3、效果
当发送方,向组播IP:PORT发送数据时,所有加入该组播IP的socket,都会收到这波数据,并且数据中仍然会携带发送方的IP:PORT。
当发送方,点对点发送、或者广播发送数据时,接收方情形不变。也即,接收方只会收到数据以及发送者的IP:PORT,但是并不知道这波数据是到底通过【点对点/组播/广播】哪一种接来的。
二、广播
发送方和接收方的编程步骤,与点对点完全相同。唯一区别在于,发送方的目标IP填:QHostAddress::Broadcast 或者 xxx.xxx.xxx.255。
QHostAddress::Broadcast 是向本机所在的所有IP网段广播,xxx.xxx.xxx.255是只向本机xxx.xxx.xxx网段广播。
点对点的UDP编程可参考我的另一篇博文《UDP编程模板》