Qt 如何发送和接收UDP数据报

您所在的位置:网站首页 怎么连续发送消息 Qt 如何发送和接收UDP数据报

Qt 如何发送和接收UDP数据报

2024-07-17 22:08| 来源: 网络整理| 查看: 265

在Qt4中,提供了QUdpSocket类,由于udp不像tcp,没有连接的概念,所以就没有QUdpServer,监听也是用同一个类,用法如下

#include int main() { QUdpSocket *socket = new QUdpSocket; socket->writeDatagram(QByteArray("Hello"),QHostAddress("127.0.0.1"),9002); // 参数1是发送的数据,最好用QByteArray,参数2是对方地址,参数3是对方接收端口号 delete socket; }

这就是用QUdpSocket发送udp数据包的方法

#include #include // 将文件编码转为执行编码(正常显示中文) #if defined(WIN32) // windows系统 # define TRANSFER(str) QString::fromUtf8(str) #elif defined(linux) // linux系统 # define TRANSFER(str) QString::fromLocal8Bit(str) #endif const quint16 bindPort = 9002; class UdpServer: public QObject { Q_OBJECT public: explicit UdpServer(QObject *parent = 0) :QObject(parent) { server = new QUdpSocket(this); server->bind(bindPort); // 使用bind函数监听 // 一个QUdpSocket只能监听一个端口 connect(server,SIGNAL(readyread()),this,SLOT(messageReceive())); } private: QUdpSocket *server; private slots: void messageReceive() { QByteArray data; data.resize(server->pendingDatagramSize()); QHostAddress addr; quint16 port; server->readDatagram(data.data(),data.size(),&addr,&port); QMessageBox::information(this,TRANSFER("收到消息"), TRANSFER("发送者: %1\n发送端口: %2\n接收端口: %3\n收到消息: %4") .arg(addr.toString()).arg(port).arg(bindPort).arg(data.constData()); } };

每当server接收到一个数据报,就会发出一个readread()信号 使用server->pendingDatagramSize()来查看数据报大小 使用server->readDatagram(char *data, qint64 maxSize, QHostAddress *address = 0, quint16 *port = 0)来读取数据报 其中address是发送者ip,port是发送者端口 你可以从官网获取更多信息



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3