资源简介
能输入窗口大小,传输的第一个字节号,能实现滑动窗口的动态滑动过程,发送方发送字节,接收方将按顺序接受的字节直接交给上层程序,错序的字节先储存在链表中,等到它之前的字节顺序到达后再一起交给上层程序。之后发送窗口向前移动。。。
代码片段和文件信息
#include
#include
#include
main()
{
struct swphdr
{
unsigned long seqnum;
unsigned long acknum;
unsigned short flags; /*flag=0表示这是一个数据帧,flag=1表示这是一个ACK帧*/
};
struct sendq_slot
{
unsigned short timeout;/*1时表示计时启动,0时表示已收到确认*/
unsigned long msg;
struct sendq_slot *next;
};
struct recvq_slot
{
unsigned short received;/*1表示顺序接收,0表示错序接受*/
unsigned long msg;
struct recvq_slot *next;
};
struct swpstate
{
unsigned long lar;
unsigned long lfs;
unsigned long sws;
struct swphdr hdr;
unsigned long rws;
struct sendq_slot *sendq;
unsigned long nfe;
struct recvq_slot *head;
}swpstate1;
unsigned long a;
int flagb;
/*发送*/
struct sendq_slot *sendq_rear*sendp*p3*p4;
struct recvq_slot *recvp*recvq_rear*p1*p2;
swpstate1.head=NULL;
swpstate1.sendq=sendq_rear=(struct sendq_slot*)malloc(sizeof(struct sendq_slot));
if(!swpstate1.sendq) exit(1);
sendq_rear->next=NULL;
printf(“请输入窗口大小:“);
scanf(“%ld“&swpstate1.sws);
swpstate1.rws=swpstate1.sws;
if (swpstate1.sws>0)
{
printf(“请输入第一帧的序列号:“);
scanf(“%ld“&swpstate1.hdr.seqnum);
}
swpstate1.nfe=swpstate1.hdr.seqnum;
sendp=(struct sendq_slot*)malloc(sizeof(struct sendq_slot));
if(!sendp) exit(1);
sendp->msg=swpstate1.hdr.seqnum;
sendp->timeout=1;
sendp->next=NULL;
sendq_rear->next=sendp;
sendq_rear=sendp;
--swpstate1.sws;
swpstate1.lfs=swpstate1.hdr.seqnum;
swpstate1.lar=swpstate1.hdr.seqnum;
do
{
while(swpstate1.sws>0)
{
sendp=(struct sendq_slot*)malloc(sizeof(struct sendq_slot));
if(!sendp) exit(1);
sendp->msg=swpstate1.lfs+1;
sendp->timeout=1;
sendp->next=NULL;
sendq_rear->next=sendp;
sendq_rear=sendp;
--swpstate1.sws;
++swpstate1.lfs;
}
swpstate1.hdr.acknum=0;
swpstate1.hdr.flags=0;
printf(“最近收到的ACK的帧序号:%ld\n“swpstate1.lar);
printf(“最近发送的帧序号(发送新帧后):%ld\n“swpstate1.lfs);
/*接收*/
if(swpstate1.hdr.flags==0)
{
do
{
printf(“请输入收到的数据帧号:“);
scanf(“%ld“&a);
if(a>=swpstate1.nfe&&a<=swpstate1.lfs)
{
if(swpstate1.head==NULL)
{
- 上一篇:一个简单的文件系统操作系统课程设计
- 下一篇:C++统计票数的实现源码
相关资源
- c语言单项选择题标准化考试系统设计
- 单片机C语言关键语句
- 人员信息管理系统c++版超详细
- NSGA2 C语言代码
- 互相关C语言程序xcorr
- C语言利用半曲线法查表实现arctan ar
- 计算学生的平均成绩c语言
- VS2010调用Keil实现单片机c语言编程
- 华农C语言题目及答案(完整版)
- 步进电机的控制程序,用C语言编写!
- c语言代码循迹智能小车+proteus仿真
- 酒店房间登记与计费管理系统
- 分水岭算法C语言实现
- 班级通讯录管理系统C语言课程设计
- c语言实现json的创建及解析
- 51单片机c语言电子钟(已加入调时、
- 如何将字符转换成ASCII
- 基于AT89C52单片机的语音录放系统的
- c语言奔跑的火柴人游戏源码
- C语言实现PID控制直流电机调速含pro
- 基于C语言的 跨平台 zip unzip
- 蜂群算法C语言实现
- c语言实现iir滤波器
- 学生成绩管理系统含二叉树内容
- C语言实现的SM2数字签名验证
- 系统循环码C语言实现
- 利用TCP协议实现文件传输C语言
- TDMA算法 C语言编写
- linux C语言 socket通信聊天小程序
- MAX485两个单片机半双工通信
评论
共有 条评论