[Qt][Qt 网络][上]详细讲解

时间:2025-02-21 18:46:43
// 构造函数中 { socket = new QUdpSocket(this); connect(socket, &QUdpSocket::readyRead, this, &Widget::ProcessRequest); // 绑定端口号. if (!socket->bind(QHostAddress::Any, 2333)) { // 绑定失败! QMessageBox::critical(this, "服务器启动出错", socket->errorString()); return; } } void Widget::ProcessRequest() { // 1. 读取请求并解析. const QNetworkDatagram& req = socket->receiveDatagram(); QString request = req.data(); // 2. 根据请求计算响应 const QString& response = Process(request); // 3. 把响应写回给客户端. QNetworkDatagram resp(response.toUtf8(), req.senderAddress(), req.senderPort()); socket->writeDatagram(resp); // 把这次交互的信息, 显示到界面上. QString log = "[" + req.senderAddress().toString() + ":" + QString::number(req.senderPort()) + "] req: " + request + ", resp: " + response; ui->listWidget->addItem(log); } QString Widget::Process(const QString &request) { return request; }