[Qt][Qt 网络][上]详细讲解
// 构造函数中
{
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;
}