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 加入组播操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用