QT实现TCP通信

目录

 

前言

一、TCP服务端的实现流程:

二、TCP客户端端的实现流程:

总结

 


前言

 

TCP通信的实现需要包含2个部分,TCP服务端和TCP客户端。

首先在工程文件中添加network:

QT       += core gui network

一、TCP服务端的实现流程:

.h需要引入头文件:

#include <QTcpServer>
#include <QTcpSocket>

1.创建QTcpServer的对象用作监听套接字;

 mServer = new QTcpServer(this);

2.使用listen()方法监听网卡的ip和端口;

mServer->listen(QHostAddress::LocalHost,8080);

3.如果有新的连接过来,并且连接成功,服务器会触发newConnection()信号,通过槽函数取出连接成功的scoket;

connect(mServer,&QTcpServer::newConnection,
        this,&Widget::slotNewConnection);


void Widget::slotNewConnection()
{
    while (mServer->hasPendingConnections()) {
        mSocket = mServer->nextPendingConnection();
        connect(mSocket,&QTcpSocket::readyRead,this,&Widget::slotReadyRead);
    }
}

4.如果有数据成功传送过来,对方的通信套接字QTcpSocket会触发readyRead()信号,在槽函数可以进行读取。

void Widget::slotReadyRead()
{
    QByteArray buffer = mSocket->readAll();
    QString str(buffer);
    ui->textEditRecv->append(str);

}

二、TCP客户端端的实现流程:

.h需要引入头文件:

#include <QTcpSocket>

1.创建QTcpSocket套接字;

mSocket = new QTcpSocket(this);

2.使用这个对象连接服务器;

mSocket->connectToHost(QHostAddress::LocalHost,8080);

3.使用write()函数向服务器发送消息;

QByteArray buffer = ui->textEditSend->toPlainText().toUtf8();
mSocket->write(buffer);

4.当socket接收缓冲区有新数据到来时,会发出readRead()信号,因此为该信号添加槽函数以读取数据;

QByteArray buffer = mSocket->readAll();
QString str(buffer);
ui->textEditRecv->append(str);

5.断开与服务器的连接(关于close()和disconnectFromHost()的区别,可以按F1看帮助)

 mSocket->close();
 mSocket->deleteLater();

 


总结


以上就是在QT中实现TCP通信的基本步骤和简单示例。

  • 15
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程详细、全面地介绍了 Qt 开发中的各个技术细节,并且额外赠送在嵌入式端编写Qt程序的技巧。整个课程涵盖知识点非常多,知识模块囊括 Qt-Core 组件、QWidgets、多媒体、网络、绘图、数据库,超过200个 C++ 类的分析和使用,学完之后将拥有 Qt 图形界面开发的非常坚实的功底。 每个知识点不仅仅会通过视频讲解清楚,并且会配以精心安排的实验和作业,用来保证学习过程中切实掌握核心技术和概念,通过实验来巩固,通过实验来检验,实验与作业的目的是发现问题,发现技术盲点,通过答疑和沟通夯实技术技能。注意:本套视频教程来源于线下的实体班级,因此视频中有少量场景对话和学生问答,对此比较介意的亲们谨慎购买。注意:本套视频教程包含大量课堂源码,包含对应每个知识点的精心编排的作业。由于CSDN官方规定在课程介绍中不能出现作者的联系方式,因此在这里无法直接给出QQ答疑号,视频中的源码、资料和作业文档链接统一在购买后从CSDN平台跟我沟通,我会及时回复跟进。注意:本套视频教程包含全套10套作业题,覆盖所有视频知识点,循序渐进,各个击破,作业总纲如下:下面是部分作业题目展示,每道题都有知识点说明,是检验学习效果的一大利器:(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)(部分作业展示,为了防止盗图盗题对题干做了模糊处理)…… ……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值