接下来是关于接收部分
同样的引入一样的头文件
在这里插入#include <QObject>
#include <QUdpSocket>
#include <qDebug>
#include <QHostInfo>
#include <QNetworkInterface>代码片
并且在h头文件添加一个槽函数
private slots:
void onSocketReadyRead();
在c文件里面添加
udpSocket=new QUdpSocket(this);
udpSocket->bind(999);
connect(udpSocket,SIGNAL(readyRead()),
this,SLOT(onSocketReadyRead()));
上述只是绑定端口号,接收的IP地址就是本机的IP地址,如果上述绑定没有成功有可能是端口号之间冲突,修改一下应该可以使用
下面是关于槽函数的实现
void protocol_analysis::onSocketReadyRead()
{
while(udpSocket->hasPendingDatagrams())
{
qDebug() << "tesaa";
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize()); //数据格式统一
QHostAddress peerAddr;
quint16 peerPort;
udpSocket->readDatagram(datagram.data(),
datagram.size(),&peerAddr,&peerPort); //接收数据
QString str=datagram.data(); //数据转换为QT的ui界面使用的QString类型
QString peer="[From "+peerAddr.toString()+":"
+QString::number(peerPort)+"] ";
qDebug() << peer+str;
}
}
接下来是本地UDP工具的设置,注意远程的端口号跟上面的端口号要一样
下面是实现的效果