QT QTcpSocket作为客户端

前言

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的基础使用;

相关推荐
stolentime10 小时前
AT_agc066_a [AGC066A] Adjacent Difference题解
c++·算法·贪心算法·构造
程序猿编码10 小时前
不用PyTorch,我用C++手写了一个能认手写数字的神经网络
c++·pytorch·神经网络·大模型
不会代码的小猴10 小时前
4. 控件学习2
开发语言·c++·笔记·qt
smallswan10 小时前
《Rust七十二变》开源了
开发语言·后端·rust·ai编程
我是小灰灰吖10 小时前
解决高频率图像处理中的内存“只增不减”:glibc malloc_trim实战指南
linux·qt
闻道且行之11 小时前
图片处理助手|C++ 手搓离线 AI 抠图工具,U2Net 原理到落地一次讲透
开发语言·c++·人工智能·神经网络·opencv·计算机视觉
三言老师11 小时前
K8s集群运行时异常趋势分析预警实操
java·开发语言·kubernetes
玖釉-11 小时前
nvpro_core2 源码与架构解析:NVIDIA Vulkan 图形开发基础框架
c++·windows·图形渲染
秋田君11 小时前
QT_一个UDP通信程序(单播+广播)
开发语言·qt·udp
我是小灰灰吖12 小时前
Qt 6.9.3 Ubuntu 22.04 虚拟键盘显示问题全记录与解决方案
linux·qt·ubuntu