欢迎来到天天文库
浏览记录
ID:30773096
大小:71.50 KB
页数:7页
时间:2019-01-03
《arq实验源码及报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机网络实验报告课程名:计算机网络实验名称:ARQ协议模拟实验学院班级姓名学号实验日期:2015年11月24日教师批阅签字:一.实验题目ARQ协议模拟实现实验二、实验环境程序是由VisualC++6.0编写实现的,只需要安装vc6.0,打开arq.dsw,编译运行即可。三.实验内容及步骤编写两个计算机程序PLP2oPl模拟发送方:首先从界面读取待发送字符(每接受一个字符的输入),保存到文件filel.txt中,并启动计时器;p2模拟接收方,它从filel.txt中查找是否有新字符到来,并提供模拟界面给用户选择:
2、1.ACK—>接收该字符2.NAK—>丢弃3.无反应一〉导致超时将用户选择的结果记录到file2.txt中;接收的字符保存到file3.txt中;pl等待接收方应答:读取f订e2.txt决定下面的操作:1)如果是ACK,则继续接收用户输入;2)如果是NAK,则重传该字符;3)如果超时仍没有新的ACK或NAK,则重传该字符。四、实验中遇到的问题该实验中主要的是对文件的操作,通过对C++的复习,基本没有什么困难,其中比较不好操作的是时间超时的控制,通过在网上查找资料,发现Sleep函数可以设置延迟,这样的话超时模块也
3、可以比较简单的写出来。五、通过实验掌握的内容这次实验主要让我了解到ARQ的实验的工作原理,基本是发送端发送数据,接收端接收数据并确认,发送端接到ACK消息,继续发送,若接收端丢弃或超时,则发送端重发数据sender.h#include#includevoidBuffer();voidAck();voidNak();voidTimeOut();receiver.h#include〈iostreani>#includevoidReceFrame();void
4、Send_Ack();voidSend_Nak();sender,cpp#includez,sender・h〃#include#include#includez/receiver-h〃voidBuffer(){charch;fstroamfilel;filei.open(〃filei.txt",ios::out);if(filel.failO){cout<〈〃文件打开失败!〃;exit(0);}cout<<,z发送端:,z<5、发送的数据帧:〃;cin>>ch;filel.put(ch);cout«z,数据LL存入缓存。"《cndl;filel.close();}voidAckO{fstreamfi1e2;charsi[5];chars2[5]={'A','C','K','!'};chars;file2.open(〃file2.txt〃,ios::in);if(file2.failO){cout«〃文件打开失败!〃;exit(0);}file2.getlino(sl,5);if(sl[0]==s2[0]){cout<<,z发送成功!,,6、<7、hars2[5]={'N','A','K','!'};file2.open(〃file2.txt〃,ios::in);if(file2.failO){cout«,z文件打开失败!“;exit(0);}file2.get1ine(si,5);if(sl[0]==s2[0]){cout«/z帧出错,准备重新发送!z,«endl;Buffer();Rece_Frame();}}voidTimeOut(){fstreamfile2;file2.open(〃file2.txt",ios::in);if(file2.fail8、O){cout«,'文件打开失败!z,«endl;exit(0);}Sleep(3000);cout«z,超时!重发"<voidSend_Ack()f
5、发送的数据帧:〃;cin>>ch;filel.put(ch);cout«z,数据LL存入缓存。"《cndl;filel.close();}voidAckO{fstreamfi1e2;charsi[5];chars2[5]={'A','C','K','!'};chars;file2.open(〃file2.txt〃,ios::in);if(file2.failO){cout«〃文件打开失败!〃;exit(0);}file2.getlino(sl,5);if(sl[0]==s2[0]){cout<<,z发送成功!,,
6、<7、hars2[5]={'N','A','K','!'};file2.open(〃file2.txt〃,ios::in);if(file2.failO){cout«,z文件打开失败!“;exit(0);}file2.get1ine(si,5);if(sl[0]==s2[0]){cout«/z帧出错,准备重新发送!z,«endl;Buffer();Rece_Frame();}}voidTimeOut(){fstreamfile2;file2.open(〃file2.txt",ios::in);if(file2.fail8、O){cout«,'文件打开失败!z,«endl;exit(0);}Sleep(3000);cout«z,超时!重发"<voidSend_Ack()f
7、hars2[5]={'N','A','K','!'};file2.open(〃file2.txt〃,ios::in);if(file2.failO){cout«,z文件打开失败!“;exit(0);}file2.get1ine(si,5);if(sl[0]==s2[0]){cout«/z帧出错,准备重新发送!z,«endl;Buffer();Rece_Frame();}}voidTimeOut(){fstreamfile2;file2.open(〃file2.txt",ios::in);if(file2.fail
8、O){cout«,'文件打开失败!z,«endl;exit(0);}Sleep(3000);cout«z,超时!重发"<voidSend_Ack()f
此文档下载收益归作者所有