QtNetwork 是 Qt 提供的网络编程模块,支持 TCP/IP、UDP、HTTP、WebSocket、DNS、SSL/TLS 等多种网络协议,并提供了高层和底层 API,适用于客户端和服务端开发。
一、QtNetwork模块功能
1. 核心网络协议支持
(1) TCP 通信
-
QTcpSocket:TCP 客户端套接字,用于建立可靠的流式连接。 -
QTcpServer:TCP 服务端,监听并接受客户端连接。
// 服务端示例
QTcpServer server;
server.listen(QHostAddress::Any, 1234);
connect(&server, &QTcpServer::newConnection, [&]() {
QTcpSocket *client = server.nextPendingConnection();
client->write("Hello from server!");
});
// 客户端示例
QTcpSocket socket;
socket.connectToHost("127.0.0.1", 1234);
connect(&socket, &QTcpSocket::readyRead, [&]() {
qDebug() << "Received:" << socket.readAll();
});
(2) UDP 通信
-
QUdpSocket:支持无连接的 UDP 数据报传输(适用于广播或多播)。QUdpSocket udpSocket; udpSocket.bind(1234, QUdpSocket::ShareAddress); connect(&udpSocket, &QUdpSocket::readyRead, [&]() { while (udpSocket.hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket.pendingDatagramSize()); udpSocket.readDatagram(datagram.data(), datagram.size()); qDebug() << "Received UDP:" << datagram; } });
2. HTTP 和 Web 通信
(1) HTTP 客户端
-
QNetworkAccessManager(NAM):管理 HTTP/HTTPS 请求(GET/POST/PUT/DELETE)。 -
QNetworkRequest和QNetworkReply:封装请求和响应。QNetworkAccessManager manager; QNetworkRequest request(QUrl("https://example.com/api")); QNetworkReply *reply = manager.get(request); connect(reply, &QNetworkReply::finished, [=]() { if (reply->error() == QNetworkReply::NoError) { qDebug() << "Response:" << reply->readAll(); } reply->deleteLater(); });
(2) WebSocket
-
QWebSocket(客户端)和QWebSocketServer(服务端)支持全双工通信。
// 客户端
QWebSocket socket;
socket.open(QUrl("ws://localhost:1234"));
connect(&socket, &QWebSocket::textMessageReceived,
[](const QString &msg) { qDebug() << "WebSocket:" << msg; });
// 服务端
QWebSocketServer server("MyServer

最低0.47元/天 解锁文章
643

被折叠的 条评论
为什么被折叠?



