QT网络通信UDP,最简单写发
两台电脑通讯,亲测可用!
最简单的UDP程序,一行多余代码都没用。总共分四步。
第一步:头文件和宏定义
包含3个头文件。
需要发送和接收的槽函数。
创建一个UDP的套接字。
#include <QHostAddress>//IP地址的头文件
#include <QUdpSocket>//UDP通讯的头文件
#include <QByteArray>//QByteArray类的头文件
private slots:
void on_pushButton_clicked();//发送数据的按键的槽函数
void readData();//接收数据的槽函数
private:
QUdpSocket *udpSocket;//创建套接字
第二步:初始化
第二条,需要根据系统里设置的IP修改,也可以获取本地IP。
udpSocket = new QUdpSocket(this);//建立套接字
udpSocket->bind(QHostAddress("192.168.1.120"),7000);//设置本地的IP和端口号,可以根据实际情况修改
connect(udpSocket, SIGNAL(readyRead()),this, SLOT(readData()));//连接接收数据的槽函数
第三步:发送数据
就一条语句。
这里使用界面创建了一个按键,点一下发送一条。
//使用writeDatagram发送数据 参数1:数据,参数2:目标IP,参数3:目标端口号
udpSocket->writeDatagram("发送数据",QHostAddress("192.168.1.130"),8000);
第四步:接收数据
这里稍微麻烦一点,使用的是帮助文档里的代码。
接收到数据后,把数据、IP、端口号,都打印出来。
QByteArray datagram;//创建一个QByteArray类,用来接收数据
datagram.resize(udpSocket->pendingDatagramSize());//获取数据长度
QHostAddress sender;//接收到的IP
quint16 senderPort;//接收到的端口号
//使用readDatagram接收数据,参数1:数据,参数2:长度,参数3:目标IP,参数4:目标端口号
udpSocket->readDatagram(datagram.data(), datagram.size(),&sender, &senderPort);
qDebug()<<"IP:"<<sender<<"Port:"<<senderPort<<"Data:"<<datagram.data();//打印输出
运行效果
使用两台电脑,网线直连,把IP设置好,PING通。
两台电脑运行这个程序。
注意:本地IP端口号,和目标IP和端口号,需要在程序里手动设置。
点击发送数据后,另一台电脑接收到数据,并打印出来。
工程链接
https://download.csdn.net/download/qq_36353009/15898002