局域網內的兩台機器如果隔有路由器,那么這兩台機器之間不能進行廣播通信,但是我們可以換成組播的通信的方式,達到相互通信的效果。
一 服務器端
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);//向服務器發送數據(UDP_SEND_PORT與服務器的監聽端口相同)
http://www.tuicool.com/articles/zUJVBj
