自学内容网 自学内容网

qt udp 只创建服务端链接

在Qt中,创建一个UDP服务端链接主要涉及到使用QUdpSocket类来监听一个端口,并接收来自客户端的数据报。以下是一个简单的UDP服务端示例,它展示了如何创建一个UDP套接字并监听端口以接收数据。

#include <QUdpSocket>  
#include <QCoreApplication>  
#include <QDebug>  
  
class UdpServer : public QObject  
{  
    Q_OBJECT  
public:  
    UdpServer(QObject *parent = nullptr) : QObject(parent)  
    {  
        udpSocket = new QUdpSocket(this);  
  
        // 绑定端口以监听传入的UDP数据报  
        const quint16 port = 12345;  
        if (!udpSocket->bind(QHostAddress::Any, port)) {  
            qDebug() << "Failed to bind port" << port;  
            return;  
        }  
  
        qDebug() << "Server is listening on port" << port;  
  
        // 连接信号以处理接收到的数据报  
        connect(udpSocket, &QUdpSocket::readyRead, this, &UdpServer::readPendingDatagrams);  
    }  
  
    ~UdpServer()  
    {  
        udpSocket->deleteLater();  
    }  
  
private slots:  
    void readPendingDatagrams()  
    {  
        while (udpSocket->hasPendingDatagrams()) {  
            QByteArray datagram;  
            datagram.resize(udpSocket->pendingDatagramSize());  
            QHostAddress sender;  
            quint16 senderPort;  
  
            // 读取数据报  
            udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);  
  
            // 处理接收到的数据  
            qDebug() << "Received datagram:" << datagram << "from" << sender.toString() << "port" << senderPort;  
        }  
    }  
  
private:  
    QUdpSocket *udpSocket;  
};  
  
int main(int argc, char *argv[])  
{  
    QCoreApplication a(argc, argv);  
  
    UdpServer server;  
  
    return a.exec();  
}  
  
#include "main.moc"

在这个示例中,我们创建了一个UdpServer类,它有一个QUdpSocket成员变量。在构造函数中,我们将套接字绑定到一个端口上,并连接了readyRead()信号到一个槽函数,以便在接收到数据报时进行处理。

readPendingDatagrams()槽函数会循环读取所有待处理的数据报,并输出它们的内容以及发送者的地址和端口号。

最后,在main()函数中,我们创建了UdpServer类的一个实例,并启动了Qt的事件循环。这样,服务器就会开始监听指定的端口,并等待接收来自客户端的数据报。


原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/140273804

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!