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()));       }     }   }
上一篇:Spring源码解析 -- SpringWeb请求参数获取解析


下一篇:Spring源码解析 -- SpringWeb请求参数获取解析