当前位置: 首页 > wzjs >正文

做网站还有开发文档吗长安外贸网站建设

做网站还有开发文档吗,长安外贸网站建设,九江网站建设排行榜,东莞网站制作哪家公司好目录 前言结果预览工程文件源代码一、开发流程二、Tcp协议三、Socket四、Tcp服务器的关键流程五、Tcp客户端的关键流程六、Tcp服务端核心代码七、客户端核心代码总结 前言 这期要运用到计算机网络的知识,要搞清楚Tcp协议,学习QTcpServer ,学…

目录

  • 前言
  • 结果预览
  • 工程文件源代码
  • 一、开发流程
  • 二、Tcp协议
  • 三、Socket
  • 四、Tcp服务器的关键流程
  • 五、Tcp客户端的关键流程
  • 六、Tcp服务端核心代码
  • 七、客户端核心代码
  • 总结

前言

这期要运用到计算机网络的知识,要搞清楚Tcp协议,学习QTcpServer
,学习QTcpClient,学习TextEdit特定位置输入文字颜色学习网络通信相关知识点,复习巩固之前UI控件。

在这里插入图片描述

结果预览

在这里插入图片描述

在这里插入图片描述

工程文件源代码

我把文档放在gitCode上

https://gitcode.com/ycs66/Qtproject-Tcp
在这里插入图片描述

一、开发流程

在这里插入图片描述

二、Tcp协议

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,旨在为不可靠的IP网络提供端到端的可靠数据传输服务。

核心特点与功能
​​1.可靠性保障​​
TCP通过​​确认应答(ACK)机制​​、​​超时重传​​、​​数据校验和​​以及​​序列号排序​​确保数据完整性和顺序性。发送方为每个数据包分配唯一序列号,接收方通过确认序号反馈接收状态,若未收到应答则触发重传。此外,校验和机制可检测传输错误并丢弃异常数据包。
2.​​流量控制​​
采用​​滑动窗口协议​​动态调整发送速率,防止接收方缓冲区溢出。通过窗口大小字段告知发送方可接收的数据量,实现高效的双向流量管理。
​​3.拥塞控制​​
通过​​慢启动​​、​​拥塞避免​​和​​快速恢复​​等算法(如AIMD算法)动态适应网络状况。例如,连接初期以指数增长探测带宽,出现丢包时线性调整速率,避免网络拥塞。
​​4.连接管理​​
通过​​三次握手​​建立连接(SYN、SYN-ACK、ACK交换)和​​四次挥手​​终止连接(FIN、ACK交互),确保通信双方状态同步。例如,三次握手防止历史连接干扰,四次挥手支持半关闭状态处理未完成数据传输。
5.​​面向字节流的传输​​
将应用层数据分割为适当长度的报文段(通常受MTU限制),重组后按顺序交付,形成连续的字节流,屏蔽底层数据包的离散性。

与UDP的对比
TCP强调可靠性,适用于文件传输(如FTP)、网页访问(HTTP)等场景;而UDP无连接、不保证可靠性,但传输效率高,常用于实时音视频或DNS查询等对延迟敏感的场景。

三、Socket

Socket 不是一个协议,而是一种编程接口(API)或机制,用于在网络中实现通信。Socket 通常在应用层和传输层之间提供一个端点,使得应用程序可以通过网络发送和接收数据。它支持多种协议,主要是TCP 和 UDP。
总之,Socket 是实现网络通信的基础工具之一,它抽象化了网络层的复杂性,为开发者提供了一种相对简单的方式来建立和管理网络连接。

四、Tcp服务器的关键流程

工程建立,需要在.pro加入网络权限
在这里插入图片描述
创建一个基于 QTcpServer 的服务端涉及以下关键步骤:

  1. 创建并初始化 QTcpServer 实例:
    实例化 QTcpServer 。
    调用 listen 方法在特定端口监听传入的连接。
  2. 处理新连接:
    为 newConnection 信号连接一个槽函数。
    在槽函数中,使用 nextPendingConnection 获取 QTcpSocket 以与客户端通信。
  3. 读取和发送数据:
    通过连接 QTcpSocket 的 readyRead 信号来读取来自客户端的数据。
    使用 write 方法发送数据回客户端。
  4. 关闭连接:
    在适当的时候关闭 QTcpSocket 。

五、Tcp客户端的关键流程

这个也要在.pro文件加上网络权限,操作与服务端相同。
创建一个基于:acpsocket 的Qt客户端涉及以下步骤:
1.创建 QTcpsocket 实例:
实例化 QTcpsocket
2.连接到服务器
使用connectToHost:方法连接到服务器的IP地址和端口。
3.发送数据到服务器
使用 write方法发送数据
4.接收来自服务器的数据!
为:readykead 信号连接一个槽函数来接收数据,
5.关闭连接
关闭QTcpsocket链接

六、Tcp服务端核心代码

主要步骤如下:
1.创建 qTcpserver实例:启动服务器并开始监听指定端口。
2.监听连接请求:调用 listen()方法使服务器监听特定的 IP 地址和端口。
3.接受连接:当客户端尝试连接时,QTcpserver 产生一个信号。你需要实现一个槽(slot)来响应这个信号,并接受连接。
4.处理客户端连接:每个连接的客户端都关联一个QTcpsocket 对象,用于数据交换。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setLayout(ui->verticalLayout);server = new QTcpServer(this);connect(server, SIGNAL(newConnection()),this,SLOT(on_newClient_connect()));connect(ui->comboBoxChlidren,&MyComboBox::on_ComboBox_clicked,this,&Widget::mComboBox_reflesh);ui->btnStopListen->setEnabled(false);ui->btnLineOut->setEnabled(false);ui->btnSend->setEnabled(false);QList<QHostAddress> address = QNetworkInterface::allAddresses();//存储所有地址for(QHostAddress tmp : address){if(tmp.protocol() == QAbstractSocket::IPv4Protocol){ui->comboBoxAddr->addItem(tmp.toString());}}}void Widget::on_newClient_connect()
{if(server->hasPendingConnections()){QTcpSocket* connection = server->nextPendingConnection();qDebug() << "client Addr: " << connection->peerAddress().toString() << "client Port: " << connection->peerPort();//客户端信息ui->textEditRev->insertPlainText("客户端地址: " + connection->peerAddress().toString() +"  客户端端口号: " + QString::number(connection->peerPort()) + "\n");connect(connection,SIGNAL(readyRead()),this,SLOT(on_readyread_handler()));//读取客户端发送的信息//connect(connection,SIGNAL(disconnected()),this,SLOT(mdisconnected()));//客户端断开链接信号和槽connect(connection,SIGNAL(stateChanged(QAbstractSocket::SocketState )),this,SLOT(mstateChanged(QAbstractSocket::SocketState )));ui->comboBoxChlidren->addItem(QString::number(connection->peerPort()));ui->comboBoxChlidren->setCurrentText(QString::number(connection->peerPort()));if(!ui->btnSend->isEnabled()){ui->btnSend->setEnabled(true);}}}

七、客户端核心代码

1.创建 Tcpc1ient 类:这个类继承自 qobject ,允许使用信号与槽机制。
2.连接信号和槽:在构造函数中,将 QTcpsocket 的 connected 和 readyRead 信号分别连接到
onconnected 和:onReadyRead槽。
3.连接到服务器:使用 connectToHost()方法开始连接过程。
4.处理连接建立:一旦连接建立,onconnected 槽被触发,客户端向服务器发送一条消息.。
5.接收数据:当数据可读时,onReadyRead 槽被触发,客户端读取并打印来自服务器的数据
6.断开连接:在接收数据后,客户端断开与服务器的连接。
这个客户端示例展示了如何使用 Qt 的信号与槽机制来处理 TCP 连接。这种方式使得代码更加清晰,易于维护,并且能更好地处理异步事件。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setLayout(ui->verticalLayout);client = new QTcpSocket(this);connect(client,SIGNAL(readyRead()),this,SLOT(mRead_Data_From_serve()));ui->btnDiscon->setEnabled(false);ui->btnSend->setEnabled(false);}void Widget::on_btnCon_clicked()
{client->connectToHost(ui->lineEditAddr->text(), ui->lineEditPort->text().toInt());timer = new QTimer(this);timer->setSingleShot(true);timer->setInterval(5000);connect(timer,SIGNAL(timeout()),this,SLOT(onTimeOut()));connect(client,SIGNAL(connected()),this,SLOT(onConnected()));connect(client,SIGNAL(error(QAbstractSocket::SocketError )),this,SLOT(onError(QAbstractSocket::SocketError )));this->setEnabled(false);timer->start();
}

总结

1.TCPServer类关于监听,连接,发送,接受的API
2.TCPServer在网络通信中常用的信号
3.TCPScoket在QT实现Socket常用的API
4.TCPScoket在QT实现Socket常用的信号
5.EditText的内容读取方法,内容写入方法,在特定行写入特点颜色的方法

在这里插入图片描述
希望大家可以一键三连,后续我们一起学习,谢谢大家!!!

在这里插入图片描述


文章转载自:

http://XilUBykG.Lrskd.cn
http://YgnR4E1F.Lrskd.cn
http://swsszOZz.Lrskd.cn
http://ORjp9JST.Lrskd.cn
http://8AlO5L3J.Lrskd.cn
http://QtB0T1Mj.Lrskd.cn
http://qXl5TVoC.Lrskd.cn
http://Xb3uTIdH.Lrskd.cn
http://bNigqNp5.Lrskd.cn
http://Al5WVlCi.Lrskd.cn
http://EpuVf2tJ.Lrskd.cn
http://CUgip8h0.Lrskd.cn
http://FpzoQp5H.Lrskd.cn
http://oUOQlUHF.Lrskd.cn
http://mrQBtKhX.Lrskd.cn
http://HShvJEVu.Lrskd.cn
http://tLuOa0ke.Lrskd.cn
http://8qY79ROh.Lrskd.cn
http://gUJMYqDQ.Lrskd.cn
http://ChYxB5Vb.Lrskd.cn
http://83rTEejS.Lrskd.cn
http://YK7HvF7k.Lrskd.cn
http://NVTUaxPh.Lrskd.cn
http://2mgNos13.Lrskd.cn
http://OJs8nAyk.Lrskd.cn
http://jOTLmpce.Lrskd.cn
http://mppgqKW1.Lrskd.cn
http://LuwADR2i.Lrskd.cn
http://HjDPYZ2Z.Lrskd.cn
http://afHsGRgV.Lrskd.cn
http://www.dtcms.com/wzjs/713831.html

相关文章:

  • 武昌网站建设外贸做双语网站好还是单语网站
  • 做网站推广的技巧青岛seo服务
  • 电商网站设计模板dwwordpress首页点击图片弹出视频
  • 做网站毕设任务书淮北论坛官网
  • 百度收录排名好的网站需要多少钱
  • 光明区建设局网站人气最火的网页游戏
  • 建设专业网站网络本溪网站建设
  • 自己的电脑做服务器 并建网站Wordpress付费主题排名
  • 网站做一些流量互换北京软件外包公司排名
  • 鼓楼微网站开发长沙好的设计公司
  • 网站对联代码贵阳网站制作企业
  • 怎么加入网站做微商城网页设计尺寸怎么算
  • 匀贵网站建设软件应用商店排行榜
  • 电子商务网站建设与维护实验报告手机上怎么修改wordpress
  • 电子商务网站模板 html定制高端网站建设企业
  • 免费自建手机网站北京网站优化招聘
  • 网站开发网页跳转到新的页面赤壁市建设局网站
  • 优化网站教程微信运营商电话
  • 自助建站吧vi设计主题品牌
  • 伪静态网站南京网站优化平台
  • 上海市城乡建设部网站首页大连企业网站建设定制
  • 廊坊网站开发公司绍兴公司网站制作公司
  • 外贸网站价格表在线app开发
  • 郑州达云通网站建设公司怎么样建筑设计专业学什么
  • 哪些网络公司可以做机票预订网站网站开发新动力
  • wordpress 插件 简码 使用生产企业网站如何做seo
  • 网页设计与制作个人网站模板新建设电影院+网站
  • 成都营销型网站建设公司餐饮美食网站建设需求分析
  • 成都网站seo报价数据上传网站
  • 汇云网站建设图片制作成视频