- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 -
《计算机网络》课程实验报告
实验二:Socket通信编程
姓名
院系
计算机学院
学号
任课教师
钱权,张瑞,袁世忠
指导教师
张瑞
实验地点
计605
实验时间
周五5-6节
实验课表现
出勤、表现得分(10)
实验报告
得分(40)
实验总分
操作结果得分(50)
实验目的:
掌握Socket编程过程;
编写简单的网络应用程序。
实验内容:
利用你选择的任何一个编程语言,分别基于TCP 和UDP 编写一个简单的Client/Server 网络应用程序。具体程序要求参见《实验指导书》。
要求以附件形式给出:
系统概述:运行环境、编译、使用方法、实现环境、程序文件列表等;
主要数据结构;
主要算法描述;
用户使用手册;
程序源代码;
实验要求:(学生对预习要求的回答)(10分)
得分:
Socket编程客户端的主要步骤
1、用socket()函数创建socket
2、设置目标服务器的IP地址和端口号
3、用connect()函数,与目标服务器连接
4、用Send()函数发送数据,recv()函数接收数据
5、关闭socket
Socket编程服务器端的主要步骤
1、用socket()函数创建socket
2、用Bind() 函数将 socket 与本机上的一个端口相关联
3、用Listen() 函数使 socket 处于监听模式
4、用accept()函数让服务器接收客户的连接请求
5、用Send()函数发送数据,recv()函数接收数据
6、关闭socket
实验过程中遇到的问题如何解决的?(10分)
得分:
问题1:
设置IP地址时,刚开始设置成自己的本机的IP地址,但是将程序放到另一台电脑上时就需要修改IP地址。后来将IP地址设置成就解决了这一问题。是回送地址,指本地机,这样就不用改变本机地址了。
问题2:
做完基于TCP的Client/Server 编程后,在做基于UDP的编程的时候,以为在TCP的基础上,只要去掉连接服务器、监听、接受连接请求这些步骤就可以,结果无法实现自己想要的效果。后来发现UDP还有一些地方与TCP的不同,比如发送、接收数据的函数是sendto()、
recvfrom(),而不是send()、recv(),仔细查看课UDP的相关资料后也就实现了这一程序。
本次实验的体会(结论)(10分)
得分:
这次SOCKET编程一开始觉得无从下手,在网上找了好多资料才了解了socket的用法,仔细研究了之后发现只要掌握了客户端和服务端各自的运行规律,编写程序意外的简单。通过这次实验我明白了看问题一定要看本质,不能被看似很难的问题吓到。我一定会再接再厉,争取做好每一次实验。
思考题:(10分)
思考题1:(4分)
得分:
你所用的编程语言在Socket通信中用到的主要类及其主要作用。
socket 类:用于服务器端程序和客户端程序,实现双方的数据通信。
SOCKADDR_IN结构:记录端口地址、IP地址、协议族等信息。
思考题2:(6分)
得分:
说明TCP和UDP编程的主要差异和特点。
TCP和UDP是Socket的两种主要操作方式:面向连接的和无连接的。
无连接的操作使用UDP数据报协议,这个操作不需要连接一个目的的socket,它只是简单地投出数据报,快速高效,但缺少数据安全性。
而面向连接的操作使用TCP协议,一个这个模式的socket必须在发送数据之前与目的地的socket取得一个连接,一旦连接建立了,socket就可以使用一个流接口:打开-读-写-关闭,所有的发送的信息都会在另一端以同样的顺序被接收,面向连接的操作比无连接的操作效率要低,但数据的安全性更高。
基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).流式套接字的设计是针对面向连接的网络应用,在数据传输之前需要预先建立连接,在数据传输过程中需要维持连接,在数据传输结束后需要释放连接。由于采用校验和、确认与超时等差错控制手段,因 此流式套接字可以保证数据传输的正确性。
数据报套接字(SOCK_DGRAM)提供无连接的、不可靠的数据传输服务,实际上它是基于TCP/IP协议族中的UDP协议实现的。数据报套接字提供无序、有差错与有重复的数据流服务。数据报套接字的设计是针对无连接的网络应用,在数据传输之前不需要预先建立连接。由于只采用很有限的差错控制手段,因此数据报套接字无法保证数据传输的正确性。
所以TCP面向连接,安全可靠,而UDP面向数据,数据可能会丢失,但是高效,结构简单,网络开销小。
指导教
文档评论(0)