资源简介
对于计算机网络中滑动窗口协议的仿真实现。
代码片段和文件信息
#include “stdio.h“
#include “malloc.h“
#define MAXSIZE 10 /*窗口大小,即队列大小*/
int i=0; /*全局变量,代表当前指向确认表的位置*/
typedef struct /*发送窗口每帧的数据*/
{
int snum;
int timeout;/*非0时代表发送计时,=6时表明超时*/
}send;
typedef struct /*发送窗口*/
{
send s[MAXSIZE];
int front;
int rear;
}wsend;
typedef struct /*接收窗口*/
{
int r[MAXSIZE];
int front;
int rear;
}wrece;
void Init(wsend *wswrece *wr) /*对发送和接收窗口进行初始化*/
{
ws->front=ws->rear=0;
wr->front=wr->rear=0;
}
int SEND(wsend *wswrece *wrint frame)
{
if((ws->rear+1)%MAXSIZE==ws->front)return 0; /*发送窗口已满*/
if(ws->front==ws->rear) /*若窗口为空,则直接进入*/
{
ws->s[ws->rear].snum=frame;
ws->s[ws->rear].timeout=1;
ws->rear=(ws->rear+1)%MAXSIZE;
wr->r[wr->rear]=frame;
wr->rear=(wr->rear+1)%MAXSIZE;
return 1;
}
else /*若窗口不为空,则判断是否是可传送的帧*/
{
if(frame==(ws->s[ws->rear-1].snum)+1)
{
ws->s[ws->rear].snum=frame;
ws->s[ws->rear].timeout=1;
ws->rear=(ws->rear+1)%MAXSIZE;
wr->r[wr->rear]=frame;
wr->rear=(wr->rear+1)%MAXSIZE;
return 1;
}
else if(frame<(ws->s[ws->rear-1].snum)+1)printf(“该帧已发送!!\n“);
else if(frame>(ws->s[ws->rear-1].snum)+1)printf(“该帧不可发送!!\n“);
}
}
int RECE(wrece *wrint frameint ack[])
{
if(wr->front==wr->rear) return 0; /*接收窗口为空*/
else /*接收窗口接收帧号,并返回确认*/
{
if(wr->r[wr->front]==frame)
{
wr->front=(wr->front+1)%MAXSIZE;
printf(“第%d帧出接收窗口,向发送窗口返回确认。\n“frame);
ack[i]=frame;
i++;
}
else printf(“该帧不是期望收到的帧,舍弃。\n“);
return 1;
}
}
int ACKNOWLEDGE(wsend *wsint ack[])
{
int j;
if(ws->front==ws->rear) return 0; /*发送窗口为空*/
if(ack[0]==ws->s[ws->front].snum) /*发送窗口进
- 上一篇:基于8086的波形发生器
- 下一篇:element ui table组件使用源码
相关资源
- 51单片机万年历程序及proteus仿真
- 51单片机DS18B20程序及proteus仿真
- PAM系统仿真
- QPSK和OQPSK的仿真程序和结果,多图
- RS485多机通信,带C51源程序,带仿真!
- 锁相在并网中非常重要,本模型是一
- SD 卡 verilog仿真模型
- 晶振电路仿真(ALTIUM DESIGNER)
- 51单片机跑马灯完整程序与电路仿真图
- RS编码器verilog仿真实现
- UART verilog仿真实现
- 军事仿真虚拟现实系统制作方案
- XFDTD 电磁场仿真软件
- 51单片机宠物喂食器代码、仿真、电路
- AT89C52单片机开发板完整Proteus仿真图
- QPSK通信系统的 MonteCarlo 仿真
- 基于栅格化的A*路径算法规划基于Si
- 基于Proteus的双直流稳压电源的设计与
- 直升机旋翼微动效应仿真
- 雷达目标RCS建模与仿真技术
- MOSFET驱动电路的设计与仿真
- 群体仿真RVO2LIB
- proteus单片机仿真串口汽车防夹
- 0145、低成本可调数显稳压电源(1.3
- Proteus不用单片机的数字电路频率计仿
- 分数阶PID研究与仿真
- Proteus 仿真MSP430之LCD12864
- 机器人足球队2D仿真高层策略概述
- 基于SystemView的比特误码率测试的仿真
- 基于SystemView的CDMA_IS_95A_前向业务信道
评论
共有 条评论