下面是使用QT实现UDP通信的代码示例:
#include <QUdpSocket>
// 创建UDP通信服务器类
class UdpServer : public QObject
{
Q_OBJECT
public:
// 构造函数
UdpServer(QObject *parent = nullptr) : QObject(parent)
{
// 创建UDP套接字
udpSocket = new QUdpSocket(this);
// 绑定到任意IP和指定端口
udpSocket->bind(QHostAddress::AnyIPv4, 3408);
// 接收数据时,会触发readyRead信号
connect(udpSocket, &QUdpSocket::readyRead, this, &UdpServer::readPendingDatagrams);
}
private slots:
// 接收数据槽函数
void readPendingDatagrams()
{
while (udpSocket->hasPendingDatagrams()) {
// 读取数据
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(), datagram.size());
// 处理接收到的数据
qDebug() << "Received data: " << datagram;
}
}
private:
QUdpSocket *udpSocket; // UDP套接字
};
// 创建UDP通信客户端类
class UdpClient : public QObject
{
Q_OBJECT
public:
// 构造函数
UdpClient(QObject *parent = nullptr) : QObject(parent)
{
// 创建UDP套接字
udpSocket = new QUdpSocket(this);
}
// 发送数据函数
void sendData(QByteArray data)
{
// 发送数据
udpSocket->writeDatagram(data, QHostAddress::LocalHost, 12345);
}
private:
QUdpSocket *udpSocket; // UDP套接字
};
使用示例:
// 创建UDP服务器
UdpServer *udpServer = new UdpServer();
// 创建UDP客户端
UdpClient *udpClient = new UdpClient();
// 发送数据
udpClient->sendData("Hello, World!");
以上代码可以创建一个本地UDP服务器,绑定到端口3408,可以接收从客户端发送过来的数据,同时可以创建一个本地UDP客户端,用于向服务器发送数据。