编程模拟实现数据链路层协议中的停等协议_第1页
编程模拟实现数据链路层协议中的停等协议_第2页
编程模拟实现数据链路层协议中的停等协议_第3页
编程模拟实现数据链路层协议中的停等协议_第4页
编程模拟实现数据链路层协议中的停等协议_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、实验题目:编程模拟实现数据链路层合同中的停等合同二、实验目的:1、掌握停止等待合同的基本原理2、理解数据链路层的重要功能(数据出错控制,数据反复控制,数据丢失控制等等)3、分析简朴的合同数据单元4、掌握停止等待合同的运营机制三、停止等待合同的算法,在发送节点:从主机取一种数据帧,送交发送缓存。发送状态变量V (S)初始化,V (S)j0。将发送状态变量值写入数据帧中的发送序号N (S), N (S)jV (S)。将发送缓存中的数据帧发送出去。设立超时计时器(选择合适的超时重传时间Tout )。等待。收到确认帧ACKn,若n=1-V(S),则:从主机取一种新的数据帧,放入发送缓存:V (S)

2、J1-V(S);转到(3)。否则,丢弃这个确认帧,转到(6)。若超时计时器时间到,则转到(4)。在接受节点:接受状态变量初始化,V (R)j0。等待。收到一种数据帧:若 N (S) =V(R),则执行(4);否则丢弃此数据帧,然后转到(6)。(4)(4)(5)更新接受状态变量,准备接受下一种数据帧,V (R)j1-V(R)。return#endifreturn#endifn-V(R),发送确认帧ACK,四、程序源代码:#include #include #include #include 异常类#ifndef _HZH_Exception_#define _HZH_Exception_#def

3、ineEXCEPTION_MESSAGE_MAXLEN256class Exception()char *GetMessage()(转到(2)。private:charm_ExceptionMessageEXCEPTION_MESSAGE_MAXLEN;public:Exception(char *msg)(strncpy(m_ExceptionMessage,msgEXCEPTION_MESSAGE_MAXLEN);m_ExceptionMessage;);#ifndef _ARQ_H#define _ARQ_H停止等待合同BSC控制字符 TOC o 1-5 h z #defineSTX(c

4、har)2/文始#defineETX(char)3/文终#defineENQ(char)5/询问#defineSYN(char)16 /同步#defineEOT(char)4 /送毕#defineACK(char)6 /正应答#defineNAK(char)15 /负应答/BSC数据报文格式#define MAXBSCLENGTH 1000 / 抱负最大值是1500-46-4=1450,从而 保证UDP合同的IP数据报不分组typedef struct Datagram(char header;开始字符bool number;/0 或者1chardataMAXBSCLENGTH;/正文char

5、 bcc;/控制字符char tail;结束字符) BSC;#endif/服务器端口#define SERVER_PORT 2280 最大重传次数#define MAXRETRY 8 传送传时时间#define TIMEOUT 3000#pragmacomment(lib,ws2_32.lib)/设立 link时的lib库using namespace std;SOCKET PrimaryUDP;char ServerIP20;char FilePathMAX_PATH;bool g_number = false; / 用作奇 偶检校的序号char g_bcc; 返回的控制字符HANDLE m

6、_hEvent;void InitWinSock() / 初始化套接 字(WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)(throw Exception(Windows sockets 2.2 startup unsuccessful);)else(printf(Using %s(Status: %s)n,wsaData.szDescription, wsaData.szSystemStatus);printf(with API versions %d.%d to %d.%dnn”,LOBYTE(wsaData.wV

7、ersion), HIBYTE(wsaData.wVersion),LOBYTE(wsaData.wHighVersio n), HIBYTE(wsaData.wHighVersion);)void mksock(int type)(PrimaryUDP = socket(AF_INET, type,0);if (PrimaryUDP 0)(throw Exception(create socket error);)void BindSock() / 绑定套接字(sockaddr_in sin;errorendl;sin.sin_addr.S_un.S_addr=INADDreturn fal

8、se;R_ANY;sin.sin_family = AF_INET;sin.sin_port = 0;if (bind(PrimaryUDP, (structsockaddr*)&sin, sizeof(sin) 0)throw Exception(bind error);)bool ASendto()(sockaddr_in remote;remote.sin_addr.S_un.S_addr =inet_addr(ServerIP);remote.sin_family = AF_INET;remote.sin_port=htons(SERVER_PORT);int fromlen = sizeof(remote);FILE * file;/打开文献if(file = fopen(FilePath, rb)=NULL)(coutFilePath open)coutfile opensucceedendl;/设立文献指针位置SetFilePointer(file, 0, NULL,FILE_BEGIN);BSC bsc;bsc.header = STX;bsc.tail = ETX;/设为有信号SetEvent(m_hEvent);/ 分段序号 bool number = false;unsigned

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论