QT 加入组播操作

2021/7/16 6:07:56

本文主要是介绍QT 加入组播操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#include <math.h> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> #include <QNetworkAddressEntry> #include <QNetworkInterface>   private:    const QString CONFIG_PATH = "./config.xml";   const QString UDP_STR = "udp";   const QString TCP_STR = "tcp";   const QString SQL_STR = "sql";    const QString PACK_STR = "package";       const QString MULT_IP = "multicastIp";     const QString PORT = "port";     const QString LOCAL_IP = "localIp";     const QString LOCAL_PORT = "localPort";     const QString dbIp = "dbIp";     const QString userName="userName";     const QString Password="Password";     const QString dbName="dbName";     QByteArray _onePackage; //一个整包数据     QUdpSocket _multicastUdp;     QHostAddress localIp;     uint localPort;     uint _port;     QHostAddress _multIp;     QDomElement _packElement;     QString dbip,username,password,dbname;   void NetworkRcv::_init() {   if(!_multicastUdp.bind(QHostAddress::AnyIPv4, localPort, QUdpSocket::ShareAddress)){   //Mymethod::record(QString("mainNode udp bind failed:ip=%1,port=%2!").arg(localIp.toString()).arg(localPort)); }else{   //Mymethod::record(QString("mainNode udp bind success:port=%1").arg(localPort));   connect(&_multicastUdp,SIGNAL(readyRead()),this,SLOT(dataReceived())); //连接接收信号槽   connect(this,SIGNAL(trackData(QByteArray)),this,SLOT(trackslot(QByteArray)));   connect(this,SIGNAL(parseData()),this,SLOT(parseDataSlot()));   QList<QNetworkInterface> list = QNetworkInterface::allInterfaces(); //获取系统里所有的网络接口   foreach(QNetworkInterface intf, list){ //遍历所有接口   foreach(QNetworkAddressEntry entry, intf.addressEntries()){   if (entry.broadcast() != QHostAddress::Null && entry.ip() != QHostAddress::LocalHost && entry.ip().protocol() == QAbstractSocket::IPv4Protocol){   if(localIp == entry.ip()){   //Mymethod::record(QString("udp network card bind success:ip=%1").arg(localIp.toString()));   _multicastUdp.setMulticastInterface(intf);       }     }   } }   if(_multicastUdp.joinMulticastGroup(_multIp)) //加入组播组 {   //Mymethod::record(QString("join multicast success:%1").arg(_multIp.toString()));   _multicastUdp.setSocketOption(QAbstractSocket::ReceiveBufferSizeSocketOption, 1024*1024*8); //设置缓冲区 }else{   //Mymethod::record(QString("join multicast failed:%1!").arg(_multIp.toString()));       }     }   }

这篇关于QT 加入组播操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程