go back n 源程序清单

go back n 源程序清单

ID:13526117

大小:35.50 KB

页数:4页

时间:2018-07-23

go back n 源程序清单_第1页
go back n 源程序清单_第2页
go back n 源程序清单_第3页
go back n 源程序清单_第4页
资源描述:

《go back n 源程序清单》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机网络滑动窗口实验程序清单Page4/4#include#include#include"protocol.h"#include"datalink.h"staticintphy_ready=0;//物理层状态staticbooleanbetween(seq_nra,seq_nrb,seq_nrc){if(((a<=b)&&(b

2、

3、((c

4、

5、((b

6、edchar*frame,intlen)//crc编码并向物理层发送{*(unsignedint*)(frame+len)=crc32(frame,len);send_frame(frame,len+4);phy_ready=0;}staticvoidsend_data(unsignedcharkind,seq_nrframe_nr,seq_nrframe_expected,packetbuffer[],intdlen[])//生成帧{frames;s.kind=kind;if(kind==Ack)//生成ack帧{s.ack=(frame_exp

7、ected+MAX_SEQ)%(MAX_SEQ+1);dbg_frame("SendACK%d",s.ack);put_frame((unsignedchar*)&s,2);}elseif(kind==Nak)//生成nak帧,s.ack记录需要重传的窗口号{s.ack=frame_expected;dbg_frame("SendNAK%d",s.ack);put_frame((unsignedchar*)&s,2);}else//生成数据(data)帧{memcpy(s.info,buffer[frame_nr],PKT_LEN);s.s

8、eq=frame_nr;s.ack=(frame_expected+MAX_SEQ)%(MAX_SEQ+1);dbg_frame("SendDATA%d%d,ID%d",s.seq,s.ack,*(short*)s.info);put_frame((unsignedchar*)&s,3+dlen[frame_nr]);start_timer(frame_nr,DATA_TIMER);}phy_ready=0;stop_ack_timer();}计算机网络滑动窗口实验程序清单Page4/4intmain(intargc,char**argv){i

9、ntevent,arg,len;intbufferLen[MAX_SEQ+1];seq_nrnext_frame_to_send=0;/*MAX_SEQ>1;usedforoutboundstream,andinitianizenextframegoingout*/seq_nrack_expected=0;/*oldestframeasyetunacknowledged,andinitianizenextackexpectedinbound*/seq_nrframe_expected=0;/*nextframeexpectedoninboundst

10、ream,andinitializenumberofframeexpectedinbound*/framer;/*scratchvarible*/packetbuffer[MAX_SEQ+1];/*buffersfortheoutboundstream*/seq_nrnbuffered=0;/*#outputbufferscurrentlyinuse,andinitiallynopacketsarebuffered*/seq_nri;/*usedtoindexintothebufferarray*/protocol_init(argc,argv);

11、lprintf("DesignedbyLiuYang,TengXiao,XuYeNan,build:"__DATE__""__TIME__"");enable_network_layer();while(true){event=wait_for_event(&arg);switch(event){caseNETWORK_LAYER_READY:/*thenetworklayerhasapackettosend*/bufferLen[next_frame_to_send]=get_packet(buffer[next_frame_to_sen

12、d]);/*bufferLen存储每个buffer中数据的有效长度*/nbuffered++;/*expandthesen

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

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

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