iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Qt中的TCP通信
  • 300
分享到

Qt中的TCP通信

tcp/ip网络服务器 2023-09-04 13:09:33 300人浏览 安东尼
摘要

一、tcp的特点 TCP(传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议 二、TCP适合应用的场景 TCP协议适用于要求可靠传输的应用,例如文件传输,网络数据库,分布式高精度计算系统的数据传输。 三、Qt中使用TCP通信

一、tcp的特点

TCP(传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议

二、TCP适合应用的场景

TCP协议适用于要求可靠传输的应用,例如文件传输,网络数据库分布式高精度计算系统的数据传输。

三、Qt中使用TCP通信

Qt中的TCP通信与之前所讲的UDP通信有着明显区别,使用TCP通信,就有着明确的客户端与服务器之分,服务器有两个套接字,分别是一个用于通信的通信套接字(QTcpSocket),一个是用于监听的监听套接字(QTcpServer),客户端只有一个用于通信的通信套接字(QTcpSocket),基本流程是客户端首先得向服务器发送连接请求,服务器监听到有客户端向它发送连接请求时,会触发newConnection信号,与此同时,客户端会触发connected信号,表示与服务器成功连接,两者建立好连接之后,服务器需要返回一个通信套接字用于和客户端通信,随后客户端与服务器就可以通过通信套接字来进行数据之间的通信

四、客户端与服务器通信的实现

添加网络模块

QT += network;

添加头文件

#include //通信套接字#include //监听套接字

服务器端的实现

tcpserver分配空间,指定父对象,然后开始监听

tcpserver = new QTcpServer(this); //分配空间,指定父对象tcpserver->listen(QHostAddress::Any,8888);//监听本机所有网口及8888端口号

一旦监听到有客户端发起了连接请求,服务器端触发newConnection信号,与此同时,客户端会触发connected信号,服务器返回一个建立好连接的通信套接字,当客户端发送数据时,服务器端会触发readyRead信号,取出tcpsocket中的数据,显示到窗口中,实现接收数据

客户端返回一个建立好连接的通信套接字一般使用如下函数

tcpsocket = tcpserver->nextPendinGConnection();

 完整代码

connect(tcpserver,&QTcpServer::newConnection,[=] //Server监听到连接请求触发newConnection信号    {        tcpsocket = tcpserver->nextPendingConnection();//Client与Server建立连接后,Server返回一个建立好连接用于通信的套接字        QString ip = tcpsocket->peerAddress().toString();//获取对方的IP        qint16 port = tcpsocket->peerPort();//获取对方的端口        QString time= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");//获取当前时间        ui->te_output->append(time+"\n"+QString("成功与[%1:%2]建立连接...").arg(ip).arg(port));        connect(tcpsocket,&QTcpSocket::readyRead,[=] //接收数据        {            QString message = tcpsocket->readAll();           QString time= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");           ui->te_output->append(time + "\n"+message);        });    });

发送数据,使用write()函数,因为已经建立好了连接,所以参数可以只有一个,就是你想发送的数据

//获取用户输入的信息    QString text = ui->te_input->toPlainText();    tcpsocket->write(text.toUtf8().data());

断开连接,使用disconnectFromHost();

tcpsocket->disconnectFromHost();//主动和客户端断开连接tcpsocket->close();tcpsocket = NULL;

客户端的实现

客户端向服务器发送连接请求

第一个参数是服务器的IP地址,第二个参数是服务器的端口号

tcpsocket->connectToHost(QHostAddress(peerip),peerport);

客户端成功连接服务器,触发connected信号,触发相应槽函数

connect(tcpsocket,&QTcpSocket::connected,[=] //客户端成功建立连接后触发connected信号    {        QString str = QString("成功与[%1:%2]建立连接...").arg(peerip).arg(peerport);        QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");        ui->te_output->append(time+"\n"+str);    });

客户端的发送与接收数据与服务器端是相同的,就不再过多阐述了

发送数据

//获取用户输入的信息QString text = ui->te_input->toPlainText();tcpsocket->write(text.toUtf8().data());

接收数据

connect(tcpsocket,&QTcpSocket::readyRead,[=]    {       QString message = tcpsocket->readAll();       QString time= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");       QString name = tcpsocket->peerName();       ui->te_output->append(time + "\n"+name+":"+message);    });

断开连接时tcpsocket会触发disconnected信号

 connect(tcpsocket,&QTcpSocket::disconnected,[=]    {        QString time= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");        ui->te_output->append(time + "\n"+"与服务器断开连接...");    });

程序演示

建立连接

 互相发送数据

断开连接

 

客户端与服务器端都可以主动与对方断开连接,断开连接后,双方就不能进行通信了

我是龙木南,这篇文章对你有帮助的话~就点个赞把~

点赞关注收藏就是对我最大的支持~

来源地址:https://blog.csdn.net/m0_71741835/article/details/127613418

--结束END--

本文标题: Qt中的TCP通信

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

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

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

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

下载Word文档
猜你喜欢
  • Qt中的TCP通信
    一、TCP的特点 TCP(传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议 二、TCP适合应用的场景 TCP协议适用于要求可靠传输的应用,例如文件传输,网络数据库,分布式高精度计算系统的数据传输。 三、Qt中使用TCP通信...
    99+
    2023-09-04
    tcp/ip 网络 服务器
  • 基于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通信框架 二、QT中的服务器操作 创建一个QTcpServer类对象,该类对象就是一个服务器调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可以让服...
    99+
    2023-10-21
    服务器 tcp/ip 网络
  • Java中TCP通信的实现
    0、TCP通信 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议, 如果使用了 WireShark 工具,可以看到一次TCP连接建立时的整个过程。 1...
    99+
    2023-09-02
    java tcp/ip 开发语言
  • java中TCP通信指的是什么
    小编给大家分享一下java中TCP通信指的是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思...
    99+
    2023-06-14
  • socket通信和tcp通信的区别有哪些
    本篇内容介绍了“socket通信和tcp通信的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!socket通信和tcp通信的区别:1...
    99+
    2023-06-29
  • .NET网络编程——TCP通信
    一、网络编程的基本概念 : 1. 网络         就是将不同区域的电脑连接到一起,组成局域网、城域网或广域网。把分部在不同地理区域的计算机于专门的外部设备用通信线路 互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相...
    99+
    2023-08-31
    网络 tcp/ip 服务器 .net eclipse java
  • Java网络编程 - TCP通信
    文章目录 TCP通信快速入门(一发一收)编写客户端代码编写服务器代码 多发多收多发多收(同时接受多个客户端)线程池优化 TCP通信 快速入门(一发一收) TCP协议回顾: TCP是一种面向连接,安全、可靠的...
    99+
    2023-08-16
    网络 tcp/ip java
  • Java基于TCP协议的Socket通信
    目录简介TCP简介JAVA Socket简介SocketImpl介绍TCP 编程构造ServerSocket1.1 绑定端口1.2 设定客户连接请求队列的长度1.3 设定绑定的IP ...
    99+
    2022-11-12
  • Java项目中怎么实现TCP通信
    Java项目中怎么实现TCP通信?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Socket简介:Socket称为“套接字”,描述IP地址和端口。在Internet上的主机一...
    99+
    2023-05-31
    java ava tcp通信
  • C语言中怎么实现TCP通信
    C语言中怎么实现TCP通信,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TCP协议TCP协议:是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定...
    99+
    2023-06-03
  • QT串口通信的实现方法
    前言:如果用qt写程序作为上位机,然后通过和usb和下位机通信的时候,就需要用到qt中的串口通信了。 使用qt中的串口通信的时候需要用到的两个头文件分别为: #include &...
    99+
    2022-11-12
  • tcp通信,客户端服务端
    进行过程  //TCP通信的流程 //服务器端(被动接受连接的角色) 创建一个用于监听的套接字         -监听:监听有客户端的连接         -套接字:这个套接字其实就是一个文件描述符 将这个监听文件描述符和本...
    99+
    2023-09-09
    tcp/ip 服务器 网络
  • python 网络通信协议/TCP,UD
    一.osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 协议具体内容   各层的功能简述: 【1】物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率...
    99+
    2023-01-30
    通信协议 网络 python
  • 如何进行TCP通信实现
    本篇文章给大家分享的是有关如何进行TCP通信实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。TCP是底层通讯协议,定义的是数据传输和连接方式的规范。TCP协议,传输控制协议(...
    99+
    2023-06-05
  • QT5如何实现简单的TCP通信
    这篇文章主要介绍“QT5如何实现简单的TCP通信”,在日常操作中,相信很多人在QT5如何实现简单的TCP通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”QT5如何实现简单的TCP通信”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • C#与java TCP通道加密通信实例
    目录1、背景说明2、测试证书3、复制粘贴加密算法4、证书格式转换5、PS1 RSA证书格式6、参考博文1、背景说明 公司收费系统需要与银行做实时代收对接,业务协议使用我们收费系统的...
    99+
    2022-11-12
  • QT如何实现串口通信
    小编给大家分享一下QT如何实现串口通信,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言:如果用qt写程序作为上位机,然后通过和usb和下位机通信的时候,就需要用...
    99+
    2023-06-15
  • QT网络通信-服务器(一)
    目录 1、简介 2 、TCP通信流程  3、基于TCP通信所需要的类 4、QT端设计 4.1项目建立  4.2 TCP网络程序设计  4.2.1 QT界面设计  4.2.2 UI布局  4.2.3 控件重命名  5、widget.h 6、w...
    99+
    2023-09-21
    qt 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作