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

昆山做网站公司哪家好网站页脚设计的几个小技巧

昆山做网站公司哪家好,网站页脚设计的几个小技巧,西安网站建设公司都有哪些,深圳微信商城网站设计价格在下面博客中#xff0c;我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程#xff0c;并附上完整源码。 socket编程UDP-文件传输模拟TCP建立连接脱离连接#xff08;进阶篇#xff09;_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制#xff1a; sock…在下面博客中我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程并附上完整源码。 socket编程UDP-文件传输模拟TCP建立连接脱离连接进阶篇_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制 socket编程UDP-实现滑动窗口机制与累积确认GBN-CSDN博客 本篇博客我将在此基础上实现停等机制完成客户端发送的接收确认、超时重传。 目录 一、停等机制的协议设计 二、停等机制的代码实现 1.实现思路 2.核心源码 3.可运行完整源码 三、运行演示 1.建立与断开连接 2.接收确认无丢包 3.丢包处理超时重传 一、停等机制的协议设计 在设计中客户端为文件发送方、服务器端为文件接收方。 每次客户端发送的数据包有唯一的序列号seq随着数据包的发送不断递增 如果服务器端收到新的数据包会发送对应的ack.(比如收到seq1就会发送ack1,收到seq2就会发送ack2). 所谓停等机制就是发送方每轮只发送一个数据包直到收到期待的ack(即与序列号对应的ack)才会发送下一个数据包。 如果发送方在定时器时间内没有收到期待的ack,将会重传这一数据包。正如图中发送端重传seq2) 二、停等机制的代码实现 1.实现思路 接收确认和超时重传机制主要通过 ‘waitForAck‘、‘receiveAck‘和 ‘sendFile‘函数来完成。以下是实现过程的描述 在 ‘receiveAck‘方法中服务器会不断监听 ACK 消息。收到任何数据包后首先验证其校 验和和 ACK 序列号是否匹配。如果验证成功会将 ‘ackReceived‘设置为 ‘true‘并通过条件变量通知 ‘waitForAck‘使其能够退出等待状态。 ‘sendFile‘方法负责逐个发送数据包并在每次发送后调用‘waitForAck‘等待接收 ACK 确认。每个数据包都包含一个序列号‘seqNum‘用于标识数据的顺序和确认接收的正确性。发送数据包后 ‘ackReceived‘标志被设置为 ‘false‘并记录期望的 ACK 序列号。 ‘waitForAck‘方法使用条件变量和超时机制如果在设定的超时时间内未收到正确的 ACK 确认便会返回 ‘false‘触发重传逻辑如果收到了正确ack,则会返回true. 2.核心源码 bool Sender::waitForAck(int seqNum) {std::unique_lockstd::mutex lock(mtx);return cv.wait_for(lock, std::chrono::milliseconds(TIMEOUT), [this, seqNum]() { return ackReceived expectedAck seqNum; }); } void Sender::receiveAck() {Datagram ackPacket(SERVER_PORT,ROUTER_PORT);socklen_t len sizeof(routerAddr);while (true) {if (recvfrom(sock, reinterpret_castchar*(ackPacket), sizeof(ackPacket), 0, (struct sockaddr*)routerAddr, len) 0) {if (ackPacket.validateChecksum(clientAddr.sin_addr.S_un.S_addr, routerAddr.sin_addr.S_un.S_addr) ackPacket.ack expectedAck) {std::lock_guardstd::mutex lock(mtx);std::cout收到ACKackackPacket.ackstd::endl;ackReceived true;cv.notify_one();}}} } void Sender::sendFile(const std::string filename) {//......int seqNum 0;while (!file.eof()) {Datagram packet(CLIENT_PORT,ROUTER_PORT);packet.seq seqNum;file.read(packet.data, BUFFER_SIZE);packet.dataSize static_castint(file.gcount());packet.flag 0; // 数据包ackReceived false;expectedAck seqNum;//1.创建接收线程避免第三次握手时ACK的丢包Datagram AckPacket(SERVER_PORT,ROUTER_PORT);if(seqNum3){std::thread ackThread1(Sender::receivePacket,this, std::ref(AckPacket));std::this_thread::sleep_for(std::chrono::milliseconds(TIMEOUT)); //休眠等一会儿ackThread1.detach();//修改}while (true) {if(AckPacket.flag 2seqNum3AckPacket.validateChecksum(clientAddr.sin_addr.S_un.S_addr, routerAddr.sin_addr.S_un.S_addr))//2.如果此时又收到了SYN-ACK{std::cout 重新收到SYN-ACK包\n;Datagram ackPacket(CLIENT_PORT,ROUTER_PORT);ackPacket.flag 3; // ACKsendPacket(ackPacket);std::cout 重新发送ACK包连接建立成功\n;std::this_thread::sleep_for(std::chrono::milliseconds(TIMEOUT)); //休眠等一会儿AckPacket.flag1;}sendPacket(packet);std::cout 发送数据包.SEQ packet.seq 校验码 packet.checksumstd::endl;std::this_thread::sleep_for(std::chrono::milliseconds(5*TIMEOUT)); //休眠等一会儿if (waitForAck(seqNum)) {break; // 收到ACK跳出重传循环}std::cout ACK超时,重传数据包,SEQ packet.seq std::endl;}seqNum;}//...... } 3.可运行完整源码 已上传github: https://github.com/yeyeyeyeye-zhang/Computer-Network/tree/main/lab3-1/codes 三、运行演示 在src目录下输入 g -o cs main.cpp Datagram.cpp Sender.cpp Receiver.cpp -lws2_32 1.建立与断开连接 客户端建立连接 服务器端建立连接 客户端断开连接 服务器端断开连接  2.接收确认无丢包 客户端正常发送与接收 服务器端正常接收与发送 3.丢包处理超时重传 出现丢包后超时客户端重传数据包
http://www.hkea.cn/news/14590291/

相关文章:

  • 如何在网站上做标记圈信息h5制作成品
  • 简单扁平化风格后台网站模板深度网站建设
  • 泉州厦门网站建设公司国家工商企业注册查询系统官网
  • 泉州建设系统培训中心网站wordpress 链接修改
  • 中国最有名的建设网站查企业电话软件哪个好
  • 佛山专业做淘宝网站cadisen卡迪森手表网站
  • 网站底部特效邓州网络推广有效的方法
  • 昆明网站建设推广wordpress放大镜没用
  • app推广的网站响应式设计的网站
  • 城市建设模拟游戏网站连接国外网站做端口映射
  • 小地方的旅游网站怎么做做黑网站赚钱吗
  • 网站编辑是什么工作wordpress如何修改用户名密码
  • 广州建设网站网站定制的公司哪家好
  • 建站公司联系电话网站第二次备案
  • 湿地公园网站建设品牌推广公司
  • wordpress iot插件厦门seo百度快照优化
  • 新乡市做网站百度app优化
  • 做网站入什么科目呼和浩特网站建设公司
  • 本地网站建设官网怎么取网页视频网站元素
  • html5企业网站模版网站的标题
  • 房地产交易网站模版石家庄局域网网站建设
  • 北外网院网站建设作业网页设计步骤及方法
  • 网站开发需要技术大型网站得多少钱
  • 云南电商网站建设房屋装修效果图app有哪些
  • 做软装设计找图有什么好的网站陕西建设执业中心网站办事大厅
  • 做网站 看什么书禁止WordPress访问官网
  • 建立一个网站英语住房与城乡建设部网站EPC
  • 万柳网站建设深圳网站建设怎么
  • 做耳鼻喉医院网站多少钱网站建设文化案例
  • 企梦网站建设重庆施工员证书查询官方网站