前言
QTcpSocket是Qt提供的关于TCP网络通信的类。QTcpSocket是一个异步的类,能够非阻塞式发送和接收数据。QTcpSocket内部封装了网络通信相关细节,对外提供便利的接口去帮助开发人员实现简历连接、断开连接、数据收发。
主要内容
基本使用方式
项目文件包含network
这里非常重要!!!
如果在Qt的pro
文件中,不加入network
,就无法找到<QTcpSockert>
头文件和QTcpSocket
类;
QT += core gui network
创建QTcpSocket对象
QTcpSocket* tcp = new QTcpSocket(this);
连接服务端
使用QTcpSocket
内部成员函数connectToHost
tcp->connectToHost(ip, port);
- ip:服务端ip地址
- port:端口
也可以是网址加端口
tcp->connectToHost("www.xxxxx.com", port);
发送数据
使用函数write
;
write
有三种函数原型
qint64 write(const char* data, qint64 len);
qint64 write(const char* data);
inline qint64 write(const QByteArray &data);
可以直接发送字符串
tcp->write("this is a test");
接收数据
QTcpSocket
当有数据传输过来,需要接收时,会发出一个名为readyRead()
信号,可以通过该信号连接槽函数,从而获取数据;
connect(socket, &QTcpSocket::readyRead, this, &YourClass::handleReadyRead);
void ClassName::handleReadyRead()
{
while (socket->bytesAvailable() > 0)
{
qDebug() << socket->readAll();
}
}
断开连接
可以调用 disconnectFromHost()
或 close()
方法来断开与服务器的连接:
tcp->disconnectFromHost();
tcp->close();
总结
上述就是Qt封装的关于TCP网络通信的类——QTcpSocket的基础使用;