基于Python的选择性重复ARQ模拟实验 课程论文+代码

!!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!!

 💕💕作者:小张
💕💕个人简介:混迹在java圈十年有余,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流!
💕💕各类成品java系统 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询交流。学习资料、程序开发、技术解答、代码讲解、源码部署,需要请看文末联系方式。


本文为选择性重复 ARQ(Selective Repeat ARQ) 模拟实验的实验报告。src 中包括两个程序, 发送发 S 和接收方 R,二者使用基于 TCP 的 socket 进行通信, 使用随机帧损坏和超时故障来反映出程序的差错控制。S 将用户输入数据组装成帧、缓存、发送、定时、可以接受 ACK 和NAK 应答,删除数据帧,停止计时。R 程序可以接受数据帧,根据是否损坏和帧序号,回应ACK 或者 NAK。
关键词: 选择性重发 ARQ,socket 通信,流量控制与差错控制
目录
摘要 1
1 设计与实现 1
1.1 总体设计 1
1.2 发送方程序实现 2
1.3 接收方程序实现 6
1.4 界面设计 8
2 展示与分析 9
2.1 窗口滑动 9
2.2 差错控制 9
2.3 超时重发 11
1设计与实现
1.1总体设计
实验采用 python 语言进行实现,主要分为三部分:
1.发送方 S:采用 socket 中的客户机模型。
•使用用户输入数据模拟上层数据,将其加入一个队列实现缓冲;
•创建一个连接守护线程,实现与服务器的连接,在此线程中再创建两个守护线程:1    个为处理来自接收者返回帧的线程,另 1 个为检查已发送的帧是否超时的线程;
•连接守护线程:若缓冲区不为空,则取出数据打包成帧、存帧、定时、发送;
•接收守护线程:接收到来自接收着的帧后,首先检查是否破损 (CRC 校验),然后根据帧类型为 ACK 或者 NAK 进行经一步的处理;
•检查超时线程:对滑动窗中已发送的帧进行超时检查,超时则重发。
2.接收方 R:采用 socket 中的服务器模型;
•采用单线程的实现方式,接收到来自发送者的帧后首先检查帧是否破损,然后检查帧  是否在接收窗口中,然后检查帧是否为 Rn,即是否为这一步所期望接收的帧。
•根据以上信息决定向接收者是否发送 NAK 和 ACK 帧。
•最后将接收到的数据输出到终端,表示传送给上层。
3.界面:采用 qt5(pyside2)进行实现。
•对发送方开发了图形界面,方便用户在输入的同时能够观察到滑动窗口的状态,和发  送帧的历史信息,同时图形界面在一定层面上,避免了多线程下需要对输入输出加锁   的繁琐;
•未对接收方开发图形界面,出于以下两个原因:
(a)接收方程序较为简单,没有输入,只有输出信息可展示;
(b)在图形界面中,要动态展示数据的处理,需要大量的延时信号,否则人眼很难观   测到变化。
1.2发送方程序实现
发送方采用多线程,异步的方式实现缓存、成帧、定时、存帧、发送、校验、接受 ACK 和
NAK、超时重发的功能。
实现图形界面展示的同时,终端也会输出详细的收发过程信息,多线程下终端的输出需要加锁。

更多项目:

另有1000+份项目源码,项目有java(包含springboot,ssm,jsp等),小程序,python,php,net等语言项目。项目均包含完整前后端源码,可正常运行!

!!! 有需要的小伙伴可以点击下方链接咨询我哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小马软件开发定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值