局域网内的两台机器如果隔有路由器,那么这两台机器之间不能进行广播通信,但是我们可以换成组播的通信的方式,达到相互通信的效果。
一 服务器端
- QUdpSocket udp_socket;
- udp_socket.bind(QHostAddress::Any, udp_listen_port, QUdpSocket::ReuseAddressHint);
- QHostAddress mcast_addr("224.0.0.17");
- udp_socket.setSocketOption(QAbstractSocket::MulticastLoopbackOption, 0);
- udp_socket.joinMulticastGroup(mcast_addr);
至此,我们已经完成了服务器的绑定并加入了组播组的工作。
二 客户端
- QHostAddress mcast_addr("224.0.0.17");
- QUdpSocket udp_socket;
- udp_socket.writeDatagram(datagram, mcast_addr, UDP_SEND_PORT);