广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >基于Qt的TCP实现通信
  • 803
分享到

基于Qt的TCP实现通信

2024-04-02 19:04:59 803人浏览 安东尼
摘要

本文实例为大家分享了基于Qt的tcp实现通信的具体代码,供大家参考,具体内容如下 一、tcp介绍 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色:服务

本文实例为大家分享了基于Qttcp实现通信的具体代码,供大家参考,具体内容如下

一、tcp介绍

TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色:
服务端:负责监听网络端口,等待客户端的连接,用连接的Socket完成信息的交互;
客户端:负责每次连接的发起,建立连接后才可以进行通信;

二、界面设计

服务器

客户端

三、具体程序设计

(1)服务器端设计

1、建立一个工程,工程名为tcpserver,类名为server。在.pro文件中加入如下代码并保存。

QT       += network

2、进入server.h,添加类的前置声明

class QTcpServer;   //QTcpServer类的前置声明
class QTcpSocket;   //QTcpSocket类的前置声明

添加私有对象指针

QTcpServer *tcpServer;          //添加QTcpServer私有对象指针
QTcpSocket *socket;             //添加QTcpSocket私有对象指针

添加私有槽声明

 void tcpServer_connect();       //连接函数
 void read_data();               //读取从client发来的信息
 void disconnected();            //断开连接
 void on_sendButton_clicked();   //发送数据函数

3、转到server.cpp文件中

添加头文件#include,然后编写构造函数构造函数

Server::Server(QWidget *parent) :            //构造函数
    QDialog(parent),
    ui(new Ui::Server)
{
    ui->setupUi(this);
    tcpServer = new QTcpServer(this);                                             //创建对象
    if(!tcpServer->listen(QHostAddress::LocalHost,6666))                          //调用listen监听到来的连接,一旦有客户端连接到服务器,就发射newConnection信号
    {
        qDebug()<<tcpServer->errorString();
        close();
    }
    ui->sendButton->setEnabled(false);                                            // 设置按钮初始值值为false状态,即不可用
    connect(tcpServer,&QTcpServer::newConnection,this,&Server::tcpServer_connect);//将newConnection信号与槽函数连接起来
}

槽函数

//发送数据槽函数
void Server::on_sendButton_clicked()
{
    socket->write(ui->sendText->toPlainText().toLocal8Bit());      //通过write函数发送数据
    socket->flush();
    ui->sendText->clear();
}

//确认连接
void Server::tcpServer_connect()
{
    socket=tcpServer->nextPendinGConnection();
    QObject::connect(socket,&QTcpSocket::readyRead,this,&Server::read_data);    //当接收缓冲区有信号到来时,产生readyRead信号
    QObject::connect(socket,&QTcpSocket::disconnected,this,&Server::disconnected);//当接收到dinconnected信号时,执行disconnected函数
    ui->sendButton->setEnabled(true);          //按钮设置为有效
    ui->label->setText(tr("连接成功!"));
}

//读取客户端发送的数据
void Server::read_data()
{
    QByteArray buffer=socket->readAll();           //读取的数据放入QByteArray对象中
    ui->recText->append(QString::fromLocal8Bit(buffer));       //将数据显示出来
}

void Server::disconnected()
{
    ui->sendButton->setEnabled(false);        //断开连接后按钮值设置为无效
}

(2)客户端设计

1、建立一个工程,工程名为tcpclient,类名为client。在.pro文件中加入如下代码并保存。

QT       += network

2、进入client.h,添加类的前置声明

class QTcpSocket;     //QTcpSocket类的前置声明

定义一个套接字对象指针

QTcpSocket *tcpSocket;       //定义一个套接字对象指针

添加私有槽函数声明

 void readData();                 //读取函数
 void discon();                   //断开连接
 void on_connectButton_clicked(); //连接按钮槽函数
 void on_sendButton_clicked();    //发送按钮槽函数

3、转到client.cpp,

添加头文件#include,并编写构造函数

Client::Client(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Client)
{
    ui->setupUi(this);
    tcpSocket = new QTcpSocket(this);          //定义套接字对象

    //关联信号到自定义的槽上
    QObject::connect(tcpSocket,&QTcpSocket::readyRead,this,&Client::readData);          //有接收数据时,执行读函数
    QObject::connect(tcpSocket,&QTcpSocket::disconnected,this,&Client::discon);
    ui->sendButton->setEnabled(false);
}

槽函数

void Client::discon()
{
    ui->sendButton->setEnabled(false);
    ui->connectButton->setText(tr("取消连接"));

}

//点击连接按钮,开始创建连接
void Client::on_connectButton_clicked()
{
    if(ui->connectButton->text()==tr("连接"))
    {
        tcpSocket->abort();
        tcpSocket->connectToHost(ui->hostLineEdit->text(),ui->portLineEdit->text().toInt());//连接到指定主机的端口
        if(!tcpSocket->waitForConnected(30000))                                             //超时连接失败
        {
            qDebug()<<"Connection failed!";
            return;
        }
        qDebug()<<"Connection successfully!";
        ui->connectButton->setText("取消连接");
        ui->sendButton->setEnabled(true);
    }
    else
    {
        tcpSocket->disconnectFromHost();
        ui->connectButton->setText("连接");
        ui->sendButton->setEnabled(false);
    }
}

//点击发送数据
void Client::on_sendButton_clicked()
{
    QString sendData=ui->sendText->toPlainText();                                           //发送数据为文本框的的内容
    tcpSocket->write(sendData.toLocal8Bit());
    tcpSocket->flush();
    ui->sendText->clear();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 基于Qt的TCP实现通信

本文链接: https://www.lsjlt.com/news/165703.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Qt的TCP实现通信
    本文实例为大家分享了基于Qt的TCP实现通信的具体代码,供大家参考,具体内容如下 一、tcp介绍 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色:服务...
    99+
    2022-11-13
  • 基于QT的TCP通信服务的实现
    目录一、结构1.1 套接字1.2 socket通信流程1.3 QTcpsocket1.4 QTcpServer二、设计UI2.1 客户端UI2.2 服务器端UI三、核心代码四、效果图...
    99+
    2022-11-13
  • Qt中的TCP通信
    一、TCP的特点 TCP(传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议 二、TCP适合应用的场景 TCP协议适用于要求可靠传输的应用,例如文件传输,网络数据库,分布式高精度计算系统的数据传输。 三、Qt中使用TCP通信...
    99+
    2023-09-04
    tcp/ip 网络 服务器
  • QT基于TCP实现文件传输系统
    本文实例为大家分享了QT基于TCP实现文件传输系统的具体代码,供大家参考,具体内容如下 一、设计目标 1、发送端选择要传输的文件,进度条显示传输的进度,手动输入要传输的ip地址和端口...
    99+
    2022-11-13
    QT TCP文件传输 QT文件传输系统 QT传输系统
  • Java基于TCP协议的Socket通信
    目录简介TCP简介JAVA Socket简介SocketImpl介绍TCP 编程构造ServerSocket1.1 绑定端口1.2 设定客户连接请求队列的长度1.3 设定绑定的IP ...
    99+
    2022-11-12
  • C#基于Socket的TCP通信实现聊天室案例
    本文实例为大家分享了C#基于Socket的TCP通信实现聊天室的具体代码,供大家参考,具体内容如下 一、Socket(套接字)通信概念 套接字(socket)是通信的基石,用于描述I...
    99+
    2022-11-13
  • golang基于websocket通信tcp keepalive实例分析
    本文小编为大家详细介绍“golang基于websocket通信tcp keepalive实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang基于websocket通信tcp keepalive实例分析”文...
    99+
    2023-06-30
  • C#基于Sockets类实现TCP通讯
    本文实例为大家分享了C#基于Sockets类实现TCP通讯的具体代码,供大家参考,具体内容如下 最终效果 TCPClient using System; using Syste...
    99+
    2022-11-13
  • Python 基于TCP 传输协议的网络通信实现方法
    目录1、基础概念1.1 协议1.2 IP 地址1.3 端口2、TCP 网络编程实现2.1 服务器端编程2.2 客户端编程3 总结1、基础概念 什么是网络编程? 指在网络环境中,如何实...
    99+
    2022-11-13
  • 如何使用C#基于Socket的TCP通信实现聊天室
    这篇文章给大家分享的是有关如何使用C#基于Socket的TCP通信实现聊天室的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下一.Socket(套接字)通信概念套接字(socket)是通信的基石,用于描述...
    99+
    2023-06-29
  • Python基于socket实现TCP/IP客户和服务器通信
    目录前言简单的搭建服务器与客户端服务器客户端create_connection(更简易的客户端)前言 套接字除了用于分析网络地址等功能之外,还可以配置一个服务器,监听到来的消息。 比如你在网络上跟网络机器人聊天,你发...
    99+
    2022-06-02
    Python 客户和服务器通信 Python TCP/IP 通信
  • QT实现TCP通信(服务器与客户端搭建)
    一、TCP通信框架 二、QT中的服务器操作 创建一个QTcpServer类对象,该类对象就是一个服务器调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可以让服...
    99+
    2023-10-21
    服务器 tcp/ip 网络
  • C#基于Sockets类如何实现TCP通讯
    这篇文章主要介绍了C#基于Sockets类如何实现TCP通讯,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下最终效果TCPClientusing Syst...
    99+
    2023-06-29
  • 基于Node.js的WebSocket通信实现
    node的依赖包 node中实现Websocket的依赖包有很多,websocket、ws均可,本文选取ws来实现,首先安装依赖 npm install ws 聊天室实例 假如A,B,C,D用户均通过...
    99+
    2022-06-04
    通信 Node js
  • Python基于socket如何实现TCP/IP客户和服务器通信
    这篇文章主要为大家展示了“Python基于socket如何实现TCP/IP客户和服务器通信”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python基于socket如何实现TCP/IP客户和服务...
    99+
    2023-06-15
  • Java中TCP通信的实现
    0、TCP通信 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议, 如果使用了 WireShark 工具,可以看到一次TCP连接建立时的整个过程。 1...
    99+
    2023-09-02
    java tcp/ip 开发语言
  • 基于C#实现串口通信
    本文实例为大家分享了C#实现串口通信的具体代码,供大家参考,具体内容如下 1.基本概念 2.前端winForm布局如下(仅仅为了实现功能,布局略丑) 3.代码实现如下 names...
    99+
    2022-11-13
  • 基于Node.js如何实现WebSocket通信
    这篇文章将为大家详细讲解有关基于Node.js如何实现WebSocket通信,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。node的依赖包node中实现Websocket...
    99+
    2022-10-19
  • 基于Node.js怎么实现WebSocket通信
    这篇“基于Node.js怎么实现WebSocket通信”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于Node.js怎么实...
    99+
    2023-06-17
  • 基于node的tcp客户端和服务端的简单通信
    目录1.简单介绍下TCP/IP2.服务端编程监听客户端连接接收数据和发送数据3.客户端编程4.一个小的登录系统1.简单介绍下TCP/IP TCP/IP是互联网相关协议的集合,分为以下...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作