- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
东南大学计算机与网络第四次实验
东南大学自动化学院
实 验 报 告
课程名称: 信息通信网络概论
第4次实验
实验名称: 设计协议
院 (系): 自动化 专 业: 自动化
姓 名: 学 号:
实 验 室: 金智楼 实验组别:
同组人员: 实验时间:2013 年12 月 23日
评定成绩: 审阅教师:
目 录
一.实验目的和要求………………………………………………3
二.实验原理………………………………………………………3
三.实验方案与实验步骤…………………………………………4
四.实验设备与器材配置…………………………………………5
五.实验记录………………………………………………………5
六.实验总结………………………………………………………9
七.思考题或讨论题………………………………………………9
实验目的和要求
目的:
1.设计简单的应用层协议,
2.开发基于TCP/IP或UDP/IP的网络通信程序,实现数据传送和文件传输。
要求:
1.正确理解应用层协议的概念;
2.更深入了解客户/服务器模式的网络程序设计。
实验原理
1. 应用层协议
应用层协议的定义包括如下内容:
(1)交换的报文类型,如请求报文和响应报文;
(2)各种报文类型的语法,如报文中的各个字段公共详细描述;
(3)字段的语义,即包含在字段中信息的含义;
(4)进程何时、如何发送报文及对报文进行响应。
有些应用层协议是由RFC文档定义的,因此它们位于公共领域。例如,web的应用层的协议HTTP(超文本传输协议,RFC 2616)就作为一个RFC供大家使用。如果浏览器开发者遵从HTTP RFC规则,所开发出的浏览器就能访问任何遵从该文档标准的web,服务器并获取相应的web页面。还有很多别的应用层协议是专用的.不能随意应用于公共领域。例如,很多现有的P2P文件共享系统使用的是专用应用层协议。目的,应用层协议主要有以下几种。SOCKET编程
服务器要创建一个用于侦听的套接字,为该套接字分配地址之后,调用listen()函数使它处于侦听状态;客户机在创建套接字完毕后,为套接字分配地址,然后调用connect()函数,请求与服务器套接字连接;服务器套接字在收到客户机的连接请示后,调用accept()函数,该函数创建一个用于连接的套接字。应用该套接字和客户机上的连接套接字,用户就可以在服务器和客户机之间进行数据传输了。在结束传输之后,客户机调用closesocket()函数关闭套接字,服务器也调用该函数关闭用于侦听和连接的套接字。
实验方案与实验步骤
1.基于TCP的socket编程
服务端
建立Socket 初始化WinSock的动态连接库后,需要在服务器端建立一个监听的Socket,为此可以调用Socket()函数用来建立这个监听的Socket,并定义此Socket所使用的通信协议。此函数调用成功返回Socket对象,失败则返回INVALID_SOCKET(调用WSAGetLastError()可得知原因,所有WinSocket 的函数都可以使用这个函数来获取失败的原因)。
绑定端口 接下来要为服务器端定义的这个监听的Socket指定一个地址及端口(Port),这样客户端才知道待会要连接哪一个地址的哪个端口,为此我们要调用bind()函数,该函数调用成功返回0,否则返回SOCKET_ERROR。
监听 当服务器端的Socket对象绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。listen()函数使服务器端的Socket 进入监听状态,并设定可以建立的最大连接数(目前最大值限制为 5, 最小值为1)。该函数调用成功返回0,否则返回SOCKET_ERROR。
服务器端的Socket调用完listen()后,如果此时客户端调用connect()函数提出连接申请的话,Server 端必须再调用accept() 函数,这样服务器端和客户端才算正式完成通信程序的连接动作。为了知道什么时候客户端提出连接要求,从而服务器端的Socket在恰当的时候调用accept()函数完成连接的建立,我们就要使用WSAAsyncSelect()函数,让系统主动来通知我们有客户端提出连接请求了。该函数调用成功返回0,否则返回SO
文档评论(0)