#inclu"> #inclu" />
欢迎来到天天文库
浏览记录
ID:25310219
大小:205.00 KB
页数:24页
时间:2018-11-19
《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("模拟器停止在:
此文档下载收益归作者所有