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 加入组播操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API