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

相关推荐
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭4 分钟前
C#都可以找哪些工作?
开发语言·c#
爱打APEX的小李9 分钟前
拷贝构造和赋值运算符重载
c++
霁月风18 分钟前
设计模式——工厂方法模式
c++·设计模式·工厂方法模式
夜阳朔26 分钟前
《C++ Primer》第三章知识点
c++·编程语言
凡人的AI工具箱26 分钟前
每天40分玩转Django:Django管理界面
开发语言·数据库·后端·python·django
每天写点bug41 分钟前
【go每日一题】:并发任务调度器
开发语言·后端·golang
一个不秃头的 程序员42 分钟前
代码加入SFTP Go ---(小白篇5)
开发语言·后端·golang
sjyioo1 小时前
【C++】类和对象.1
c++
数据小爬虫@1 小时前
Python爬虫抓取数据,有哪些常见的问题?
开发语言·爬虫·python
逊嘘1 小时前
【Java数据结构】ArrayList相关的算法
java·开发语言