#inclu"> #inclu" />
cbn协议实现(c语言)

cbn协议实现(c语言)

ID:25310219

大小:205.00 KB

页数:24页

时间:2018-11-19

cbn协议实现(c语言)_第1页
cbn协议实现(c语言)_第2页
cbn协议实现(c语言)_第3页
cbn协议实现(c语言)_第4页
cbn协议实现(c语言)_第5页
资源描述:

《cbn协议实现(c语言)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中文注释编程实现一个GBN传输协议的发送方和接收方两程序,采用编程语言不限,要求能将发送――接收流程以及处理方法表现出来.附源代码及注释源代码:三:GBN-CS.c#include"GBN.h"#include#include#includeexternintTRACE;/*用于跟踪*/externintnsim;/*当前第5层到第4层的信息数*/externintnsimmax;/*"msg"生成数量,直到停止,生成的最大信息数*/externfloattime;/

2、/时间externintpacket_correct;//包的正确到达数externintpacket_resent;//包的重传数externstructevent*evlist;//事件intmain()//主函数{structevent*eventptr;//变量,结构体声明structmsgmsg2give;structpktpkt2give;inti,j;charc;init();//初始化A_init();//A端初始化B_init();//B端初始化while(1)//循环,用于每个包的传送{eventptr=

3、evlist;/*从模拟器得到下一个事件*/if(eventptr==NULL)gototerminate;evlist=evlist->next;/*从事件清单改变该事件*/if(evlist!=NULL)evlist->prev=NULL;if(TRACE>=2)//打印与事件相关的信息{printf("事件时间:%f,",eventptr->evtime);printf("类型:%d",eventptr->evtype);if(eventptr->evtype==0)printf(",计时器中断:");elseif

4、(eventptr->evtype==1)printf(",来自第五层");elseprintf(",来自第三层");if(eventptr->eventity==A)//打印事件实体{printf("通信实体:%dA端",eventptr->eventity);}else{printf("通信实体:%dB端",eventptr->eventity);}}time=eventptr->evtime;/*更新下一个事件的时间*/if(nsim==nsimmax)break;/*当输入包个数等于生成的最大包个数,模拟器停

5、止*/if(eventptr->evtype==FROM_LAYER5)//如果事件调用来自第五层{generate_next_arrival();/*为将来的包的到达做准备*//*将相同的信息转换为字母字符串*/j=nsim%26;for(i=0;i<20;i++)msg2give.data[i]=97+j;if(TRACE>2){printf("学生发送的主要数据是:");for(i=0;i<20;i++)printf("%c",msg2give.data[i]);//打印信息printf("");}nsim++;i

6、f(eventptr->eventity==A)//A端向外发送数据{A_output(msg2give);}else//B端向外发送数据{B_output(msg2give);}}elseif(eventptr->evtype==FROM_LAYER3)//如果事件调用来自第三层{pkt2give.seqnum=eventptr->pktptr->seqnum;pkt2give.acknum=eventptr->pktptr->acknum;pkt2give.checksum=eventptr->pktptr->check

7、sum;for(i=0;i<20;i++)pkt2give.payload[i]=eventptr->pktptr->payload[i];if(eventptr->eventity==A)/*A端交付包*/A_input(pkt2give);/*适当的实体*/else/*B端交付包*/B_input(pkt2give);free(eventptr->pktptr);/*释放包的缓存*/}elseif(eventptr->evtype==TIMER_INTERRUPT)//计时器中断情况{if(eventptr->event

8、ity==A)A_timerinterrupt();elseB_timerinterrupt();}else//校检,防止发生不可预料事件{printf("内部警告:不可预知的事件类型!!");}free(eventptr);}terminate://终止printf("模拟器停止在:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。