组播与多播
在前面已经记录过UDP的单播模式,即客户端只能与服务端单独对接。接下来介绍UDP的另外两种通讯方式
组播
QQ群,微信群其实可以看成一个组播地址,在群里的人都是加入了这个组播,无论谁往这个地址发数据,群里的人都能收到。下面直接上代码
(注意这里不分客户端服务端,客户端服务端都是相对而言的)
udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress("192.168.1.100"), 45454);
QByteArray datagram = "Multicast message " + QByteArray::number(messageNo);
udpSocket->writeDatagram(datagram.data(), datagram.size(),
QHostAddress("239.255.43.21"), 45454);
//"239.255.43.21" 是定义的一个组播地址
++messageNo;
广播
广播地址是255.255.255.255,注意广播是不能通过路由器转发的。直接上代码
//发送数据
udpSocket->writeDatagram(datagram.data(), datagram.size(),
QHostAddress::Broadcast, 45454);
//接收数据
udpSocket = new QUdpSocket(this);
udpSocket->bind(45454, QUdpSocket::ShareAddress);
connect(udpSocket, SIGNAL(readyRead()),
this, SLOT(processPendingDatagrams()));