基于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);