美术培训学校网站模板中国石油天然气第六建设公司网站
前言
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的基础使用;
