资源预览内容
第1页 / 共77页
第2页 / 共77页
第3页 / 共77页
第4页 / 共77页
第5页 / 共77页
第6页 / 共77页
第7页 / 共77页
第8页 / 共77页
第9页 / 共77页
第10页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中南大学通信网原理课程设计报告 班 级: 姓 名: 学 号: 指导老师: 实验地点: 完成日期: 电子信息工程系信息科学与工程学院目 录第一部分:课程设计的目的与任务1一、课程设计的目的1二、课程设计的主要任务1第二部分:滑动窗口协议仿真2一、 课程设计目的及要求2二、 设计思想2三、 设计流程图2四、 开发环境4五、 关键代码分析4六、 仿真运行10第三部分:网络即时通讯程序12一、 课程设计目的及要求12二、 设计思想12三、 设计流程图13四、 开发环境14五、 关键代码分析14六、 运行与调试20第四部分:课程设计心得体会23第五部分:参考文献24第六部分:附录24一、 滑动窗口协议仿真24二、 网络即时通讯程序33编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页 共1页第一部分:课程设计的目的与任务 一、课程设计的目的 通信网原理课程设计是为电子信息工程专业本科生开设的必修课,有2 学分,既是对通信网原理课程实验教学环节的补充,又是一门实践性很强的综合强化训练课程。计算机网络或Internet 网已成为现代最重要的通信网,未来各种通信网都将以计算机网络和IP 协议为核心实现互连互通。因此,本课程设计的主要任务是在掌握计算机网络TCP/IP 等典型协议原理的基础上,通过编程设计对网络协议或算法进行模拟实现,并应用相应网络协议来开发一个网络应用系统。其目的是通过将理论与实践相结合,使学生进一步深入理解通信网的工作原理,掌握网络应用开发技术,学会应用所学理论知识来分析和解决实际问题,培养网络技术研究与开发的基本能力以及创新精神。二、 课程设计的主要任务 通过本课程教学,要求学生熟悉TCP/IP 协议工作机制、熟悉基于Socket 的网络通信程序的设计方法,熟练掌握至少一种编程语言及工具的使用。通过设计和调试有关程序,掌握一种网络协议或算法的编程实现方法或具体应用,同时设计一个相对独立的网络应用程序。第二部分:滑动窗口协议仿真一、 课程设计目的及要求1、 程序按照滑动窗口协议实现端对端的数据传送。包括协议的各种策略,如包丢失、停等应答、超时等都应有所仿真实现。2、 显示数据传送过程中的各项具体数据;双方帧的个数变化,帧序号,发送和接受速度,暂停或重传提示等。3、 增加其它附加创新功能。二、 设计思想滑动窗口协议是TCP使用的一种流量控制方法。本次课程设计模拟仿真1比特滑动窗口协议,即停等协议。该协议规定,发送方每发送一帧后就要停下来,等待收到接收方正确接受的确定后再继续发送下一帧。如果在规定的最大时延内没有收到接收方的确认信号,则重新发送该帧。为了确认每次发送的帧是以前发过的还是新发送的,接收方需要发送方对每一帧加一个编号。由于停等协议规定只有一帧确认发送完成后才可以发送下一帧,因而只用一比特来编号就可以了。三、 设计流程图新数据或重发数据处理时间最大时延确认信号发送数据接收方发送方四、 开发环境Window7,VC+五、 关键代码分析1、 定义及初始化守法窗口typedef struct /*接收窗口*/int rMAXSIZE;int front;int rear;wrece;void Init(wsend *ws,wrece *wr) /*对发送和接收窗口进行初始化*/ws-front=ws-rear=0;wr-front=wr-rear=0;2、 说明发送窗口的发送情况int SEND(wsend *ws,wrece *wr,int frame)if(ws-rear+1)%MAXSIZE=ws-front)return 0; /*发送窗口已满*/if(ws-front=ws-rear) /*若窗口为空,则直接进入*/ws-sws-rear.snum=frame;ws-sws-rear.timeout=1;ws-rear=(ws-rear+1)%MAXSIZE;wr-rwr-rear=frame;wr-rear=(wr-rear+1)%MAXSIZE;return 1;else /*若窗口不为空,则判断是否是可传送的帧*/ if(frame=(ws-sws-rear-1.snum)+1)ws-sws-rear.snum=frame;ws-sws-rear.timeout=1;ws-rear=(ws-rear+1)%MAXSIZE;wr-rwr-rear=frame;wr-rear=(wr-rear+1)%MAXSIZE;return 1;else if(framesws-rear-1.snum)+1)printf(该帧已发送!n);else if(frame(ws-sws-rear-1.snum)+1)printf(该帧不可发送!n);3、 说明接受窗口的接受情形int RECE(wrece *wr,int frame,int ack)if(wr-front=wr-rear) return 0; /*接收窗口为空*/else /*接收窗口接收帧号,并返回确认*/if(wr-rwr-front=frame) wr-front=(wr-front+1)%MAXSIZE;printf(第%d帧出接收窗口,向发送窗口返回确认。n,frame);acki=frame;i+;else printf(该帧不是期望收到的帧,舍弃。n);return 1;int ACKNOWLEDGE(wsend *ws,int ack)int j;if(ws-front=ws-rear) return 0; /*发送窗口为空*/if(ack0=ws-sws-front.snum) /*发送窗口进行确认处理*/ws-front=(ws-front+1)%MAXSIZE;for(j=0;jfront;b=wr-front;printf(发送窗口:);while(arear)printf(%3d ,ws-sa);a+;printf(n);printf(接收窗口:);while(brear)printf(%3d ,wr-rb);b+;printf(n);4、 接受错误要求重新发送main()int frame,a,flag=0; /*frame帧号,a指向窗口当前位置,flag是否有重发(0没有,1有)*/ int err;char end=n,ch,ACK;int ack5; /*定义一个可存储5个确认信息的*/wsend *ws;wrece *wr;ws=(wsend *)malloc(sizeof(wsend);wr=(wrece *)malloc(sizeof(wrece);Init(ws,wr);printf(程序开始运行n);while(end!=y&end!=Y)/*传送处理*/a=ws-front; while(arear)if(ws-sa.timeout=6) ws-sa.timeout=1;flag=1;printf(重发第%d帧n,ws-sa);else ws-sa.timeout+;a+;if(flag=0)printf(请输入需传送的帧号(0代表不输入):);scanf(%d,&frame);if(frame!=0)err=SEND(ws,wr,frame);if(err=0)printf(发送窗口已满!n);printf(接收窗口期待接收到的帧号为:%dn,wr-rwr-front);六、 仿真运行第三部分:网络即时通讯程序一、 课程设计目的及要求1、 用户登录功能:客户端登录到聊天服务器,服务器管理所有登录的客户,并将客户列表及状态发送到各个客户端显示;2、 用户呼叫功能:用户可通过客户端向服务器发起呼叫请求;服务器搜索被呼叫的用户,如果检测到此用户处于在线状态,则通知此用户的客户端程序;当被叫用户做出响应后,在主叫方和被叫方之间建立连接,双方就可以聊天或进行媒体流传输;3、 用户消息也可以通过服务器转发,实现一对一和多对多聊天;4、 增加其它附加创新功能。二、 设计思想实现网络即时通讯的基本思想是由客户端将信息发送到服务器端,然后由服务器端判断将信息发往某个特定的用户还是所有用户。为实现用户登录功能,可以建立一个用户信息的数据库或文件,来实现用户的登录或注册。用户聊天功能的实现需要在用户登录进入聊天室时建立一个链接,该链接由服务器端监控,由此来实现用户在线数量的控制和在线人数的显示。当某一用户发起对另一用户的聊天请求时,由服务器端判断该用户是否在线,规定只能向在线用户发送消息。若该用户在线,则将发送用户发送来的消息通过链接转发到接收用户的客户端上,由客户端显示。如果发送用户发送的消息是对所有人的,则将该消息转发至所有人。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号