- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用层协议设计和实现
应用层协议主要规定两方面的内容:一是通信双方交换数据的格式与顺序,二是通信双方应该采取的动作。
应用层利用运输层实体提供的服务来完成某种具体的应用。
这些服务以函数或对象的方法来体现。; 一、本协议的主要内容是在服务器端与客户端间传输文件。
客户端给出文件名,则服务器寻找该文件,若找到则传输给客户端。
找不到则报错。给出该协议的详细设计。
二、设计完协议后,再使用传统的C语言套接字函数实现该协议。; 同学们请考虑以下问题:
一、本协议应该包括哪些主要内容?本协议的基本结构是怎样的?
二、C语言套接字函数可能有哪一些?; 演示已编写好的服务器端与客户端程序。 服务器端程序(server.exe) 客户端程序(client.exe)
同学们请继续考虑以下问题:
根据实现这个协议的两个程序,本协议的详细内容应该是什么?给同学们10分钟的时间,时间到时请同学上台讲一讲。; 1.由于要传输各种类型的文件,本协议在运输层采用可靠的TCP协议。
2.服务器端在固定端口10000监听。
3.客户首先向服务器发送欲传输的文件名(包含路径),该项数据是变长的,是一个ASCII码字符串。
4.服务器收到文件名,在本地查找并打开该文件。; 5.若查找不到该文件,或者无法打开,服务器向客户发送4字节的全“0”数据,此次通信结束。
6.若成功打开该文件,服务器首先向客户发送4字节的文件长度。这是一个整型无符号数字。
7.在发送完文件长度后,服务器开始发送整个文件。发送完毕后结束通信。; 8.客户发送完文件名后,先接收4字节数据,若为全“0”,则结束通信,并向用户报错。
9.若4字节数据不是全“0”,则开始接收文件内容,并写入硬盘。接收完毕后结束通信。; 目前的多种开发工具都可以实现本协议,最简单的办法利用开发工具中的套接字对象,建立该对象后调用它的相关方法就能实现数据的收发。 为更好地体会运输层协议提供的服务,此次我们使用VC++开发工具,并使用传统的套接字函数实现本协议。; 服务器程序使用的套??字函数主要有:
Listen(), accept(), send(), recv(), closesocket()等。 客户机程序使用的套接字函数主要有: connect(), send(), recv(), closesocket()等。 服务器程序源文件(serverDlg.cpp)
客户机程序源文件(clientDlg.cpp); 1.协议规定了通信双方交换的数据格式与采取的动作。应该是清晰的、无二义性的。这样服务器器程序与客户机程序可由不同的人按照协议文本分别实现,只要符合协议,这两个程序一定能够正常配合运行。
2.编程实现应用层协议时,必须要用到运输层提供的服务,可由套接字函数来提供 ,也可以由套接字对象来提供。
文档评论(0)