头文件
#include <QTcpSocket>
#include <QTcpServer>
一、服务端:(QTcpServer)
①创建QTcpServer对象
②监听list需要的参数是地址和端口号
③当有新的客户端连接成功回发送newConnect信号
④在newConnection信号槽函数中,调用nextPendingConnection函数获取新连接QTcpSocket对象
⑤连接QTcpSocket对象的readRead信号
⑥在readRead信号的槽函数使用read接收数据
⑦调用write成员函数发送数据
创建对象,调用listen接口监听
QTcpServer server;
bool serverStarted = server.listen(QHostAddress::Any, 1234);
if (!serverStarted) {
// 处理错误情况
}
当有客户端连接时,QTcpServer
会发出newConnection
信号。连接建立后,可以获取QTcpSocket
对象来与客户端通信。
connect(&server, &QTcpServer::newConnection, [&]() {
QTcpSocket *clientSocket = server.nextPendingConnection();
connect(clientSocket, &QTcpSocket::readyRead, [&]() {
QByteArray data = clientSocket->readAll();
// 处理接收到的数据
// 发送数据到客户端
clientSocket->write("Hello from server");
clientSocket->flush();
});
connect(clientSocket, &QTcpSocket::disconnected, [clientSocket]() {
clientSocket->deleteLater();
});
});
二、客户端:(QTcpSocket)
①创建QTcpSocket对象
②当对象与Server连接成功时会发送connected 信号
③调用成员函数connectToHost连接服务器,需要的参数是地址和端口号
④connected信号的槽函数开启发送数据
⑤使用write发送数据,read接收数据
QTcpSocket clientSocket;
clientSocket.connectToHost("127.0.0.1", 1234);
connect(&clientSocket, &QTcpSocket::connected, [&]() {
// 发送数据到服务器
clientSocket.write("Hello from client");
});
connect(&clientSocket, &QTcpSocket::readyRead, [&]() {
QByteArray data = clientSocket.readAll();
// 处理接收到的数据
});
断开链接
clientSocket->disconnectFromHost();
clientSocket->deleteLater();