QT Udp组播(穿透)

    局域网内的两台机器如果隔有路由器,那么这两台机器之间不能进行广播通信,但是我们可以换成组播的通信的方式,达到相互通信的效果。

一 服务器端

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

原文地址:https://www.cnblogs.com/findumars/p/6124345.html