基于udp的文件传输:我们需要在客户和服务器间传送一个文件,基于udp的文件传输实验报告...

该实验报告详细介绍了基于UDP协议的文件传输过程,重点关注发送和接收窗口的概念及其在流量控制中的作用。实验内容包括实现发送线程和接收线程,以及如何利用滑动窗口协议确保数据的正确传输。通过设置发送窗口和接收窗口的大小,实现数据帧的有序接收,并在接收窗口旋转后推动发送窗口前进。
摘要由CSDN通过智能技术生成

基于udp的文件传输实验报告

一实验目的

1了解udp文件传输的具体内容

2明白发送窗口,接收窗口的定义

3理解发送端的发送线程,以及发送端的接收线程

4掌握接收端的接收线程

二实验内容

基于udp协议的文件传输,以及相关代码

三实验步骤

1发送窗口

发送窗口用来对发送端进行流量控制。发送窗口的大小Wt 代表在还没有收到对方确认的条件下,发送端最多可以发送的数据帧的个数。

2接收窗口

接收窗口用来控制接收数据帧。只有当接收到的数据帧的发送序号落在接收窗口内,才允许将该数据帧收下,否则一律丢弃。接收窗口的大小用Wr 来表示,在连续ARQ 协议中,Wr = 1。

在接收窗口和发送窗口间存在着这样的关系:接收窗口发生旋转后,发送窗口才可能向前旋转,接收窗口保持不动时,发送窗口是不会旋转的。这种收发窗口按如此规律顺时钟方向不断旋转的协议就犯法为滑动窗口协议。

发送端的发送线程:

int ret;

int nPacketCount = 0;

DWORD dwRet;

SendBuf sendbuf;

DWORD dwRead;

DWORD dwReadSize;

SendBuf* pushbuf;

//计算一共要读的文件次数,若文件已读完,但客户端没有接收完,

//则要发送的内容不再从文件里读取,而从m_bufqueue 里提取

nPacketCount = m_dwFileSize / sizeof(sendbuf.buf);

//若不能整除,则应加1

if(m_dwFileSize % sizeof(sendbuf.buf) != 0)

++nPacketCount;

SetEvent(m_hEvent);

CHtime htime;

//若已发送大小小于文件大小并且发送窗口前沿等于后沿,则继续发送

//否则退出循环

if(m_dwSend < m_dwFileSize) // 文件没有传输完时才继续传输

{

while(1)

{

dwRet = WaitForSingleObject(m_hEvent, 1000);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值