- 在pro文件中加入QT += network
- 在对应头文件中添加、等需要使用的头文件
- 客户端私有变量中定义:QTcpSocket *tcpSocket;
- 在cpp文件中:tcpSocket = new QTcpSocket(this);
- 连接: connect(tcpSocket, &QTcpSocket::connected,
=
{
tcpSocket->connectToHost(QHostAddress(ipAdress),port);(获取IP地址和端口号)
可提示连接成功;
});
-
发送数据:tcpSocket->write(str.toUtf8().data());
-
接收数据:connect(tcpSocket, &QTcpSocket::readyRead,
{
处理接收的数据内容;
}
connect(tcpSocket,&QTcpSocket::disconnected,
{
tcpSocket->disconnectFromHost();
tcpSocket->close();
断开连接可提示的操作;
});
- 服务器端:私有变量定义:
QTcpServer *tcpServer;
QTcpSocket *tcpSocket;
-
CPP文件中tcpServer = new QTcpServer(this); //初始化
-
监听套接字:tcpServer->listen(QHostAddress::Any, 8888);
-
取出建立好连接的套接字:connect(tcpServer,&QTcpServer::newConnection,
={
tcpSocket = tcpServer->nextPendingConnection();
QString ip = tcpSocket->peerAddress().toString();
quint16 port = tcpSocket->peerPort();
});
- 连接成功后读取客户端信息:
connect(tcpSocket,&QTcpSocket::readyRead,
={
QByteArray buf = tcpSocket->readAll();
读取完成后可对buf进行对应操作;
});
- 发送数据:tcpSocket->write(Str.toUtf8());
若TCP发送包会出现黏包情况可通过定时器延时操作避免
-
定时器使用:QTimer timer; //定时器
-
connect(&timer,&QTimer::timeout,
={
Timer.stop();//关闭定时器
发送数据;
});
- 发送数据中设置timer.start(20);//表示定时器延时20ms。