- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可靠的数据传输协议rdt的模拟实现
可靠的数据传输协议rdt的模拟实现
姓名:陈 锋 学号:212008081202005
一、实验目的:
加深对可靠的数据传输协议(包括链路层、传输层和应用层)的理解。
二、实现的功能与要求
2.1、功能
(1)由一台 PC (线程)向另一台 PC (线程)发送数据包,界面应显示出双方帧个数变化,帧序号,发送和接受速度,暂停或重传提示等,界面中必须动态显示数据帧的发送情况和接受情况,包括在相应窗口详细显示相应的 ACK 和其他收发数据帧后发出的消息 ,以表明模拟协议的正确运作过程。
(2)接收方及发送方应具有按序收发帧的能力;
(3)接受方应有固定大小的窗口,并对收到信息缓存。当发送方速度过快或帧丢失(超时),接受方应发送消息,要求暂停或重传(停 -- 等协议);
(4)发送方发送速度应可以调节,并可以暂停或重发;
(5)发送方重传时可仅重传需要的(丢失的)幀;
(6)以上几个功能应可视,要求简单界面。
2.2、要求
(1)Windows或者UNIX环境下,对可靠的数据传输协议的简单实现,程序应在 1-2 台 PC 上运行,
(2)演示在两台计算机间传输,允许在同一台机器中用两个独立线程来模拟。
三、可靠数据传输协议rdt的传输原理
下层信道是完美可靠的,没有bit错误,没有分组丢失。对发送方接收方具有独立的FSMs,发送方发送数据到下层信道,接收方从下层信道接收数据。
图1、可靠信道上的可靠传输
整个协议的工作原理图如下:
图2、可靠数据传输协议传输原理示意图
四、实验流程图
首先,启动服务器,调用Socket()建立一个套接口,然后用bind()将该套接口与本地网络地址绑定,再调用listen()使套接口做好监听的准备,规定请求队列的长度,在调用accept()来接收连接。
客户在建立套接口后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。最后,待数据传送结束后,调用close()关闭套接口。实验流程图如下页图3所示。
ServerSocket()
Socket()
Bind()
Listen()
Accept()
S
Socket()
阻塞,等待
建立连接Write()Write()Close()Close()Read()
建立连接
Write()
Write()
Close()
Close()
Read()
connect()
connect()
请求数据R
请求数据
Read()
处理服务请求
应答数据
应答数据
图3、Socket编程模拟实现rdt协议的流程图
五、主要程序片段
5.1 重要的数据结构—class CRcvSocket和class CSndSocket
类class CRcvSocket,用于服务器端的Socket通信。
class CRcvSocket : public CSocket
{
// Attributes
public:
// Operations
public:
CRcvSocket();
virtual ~CRcvSocket();
// Overrides
public:
void SetNotifyWnd(HWND hNtf);
void SetNotifyMsg(UINT uMsg);
private:
HWND hNotifyWnd;
UINT uNotifyMsg;
};
类class CSndSocket,用于客户端的Socket通信
class CSndSocket : public CSocket
{
// Attributes
public:
// Operations
public:
CSndSocket();
virtual ~CSndSocket();
// Overrides
public:
void SetRcvNotifyMsg(UINT nMsg);
UINT uRcvMsg;
void SetNotifyWnd(HWND hNtf);
private:
HWND hNotifyWnd;
};
5.2建立套接字
不管是客户端程序,还是服务器端程序,都需要在运行的时候去建立套接字。唯一的区别是:服务器端建立一个套接字,然后开始无限循环;每当它通过循环接收到一个连接,则打印出一个信息,客户端建立套接字,然后与命令行给出的套接字连接;连接结束时,在连接上发送?一个消息,然后关闭套接字。
sock?=?socket(AF_INET,?SOCK_STREAM,?0);?
if?(sock??0)?{?
perror(“opening?stream?socket”);?
exit(1);? }?
5.3 在客户端中,使用命令行中
您可能关注的文档
- 关于加强高校校办企业、后勤服务廉政风险.doc
- 关于对中央广播电视大学人才培养模式改革和.doc
- 关于成立运城市融通大学生科技创业园的方 案.doc
- 关于我院理工科专业大学数学教学改革思考.doc
- 关于推进安徽省工会信息化工作.doc
- 关于春运——刘良彩.ppt
- 关于湖北工业大学易时科技青年精英实验班.doc
- 关于生产制作单的制作审核流程的建议.doc
- 关于组织开展第8个福建省.doc
- 关于组织落实电工安全口诀.doc
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)