计算机网络课程设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络课程设计报告
姓名:王齐
学号:1105010404
班级:计算机四班
指导老师:张会福
湖南科技大学计算机科学与工程学院
2014年02月
实验一:
一、设计题目
网络聊天程序的设计与实现
二、实验目的
1、加深对计算机网络通信系统工作原理的理解
通过编写计算机程序实现、模拟网络的某些功能,使自己理解并掌握计算机网络基本工作原理及过程。
2、提高网络编程和应用的能力
提高实际编程能力和灵活运用所学知识解决问题的能力。培养调查研究、查阅技术文献、资料、手册及编写技术文档的能力,理论运用于实践的能力。
三、课程设计要求
1、仔细分析每一个实验的具体内容、步骤和要求,按设计要求完成任务。
2、程序设计需要完成的程序流程图、说明文档和源程序清单。
3、提交课程设报告(包含课程设计名称、课程设计题目、课程设计内容、课程设计步骤、调试过程、课程设计结果以及结果分析、心得体会)、程序源文件、可执行文件。
四、程序原理
在计算机通信系统中,有两种通信方式:面向连接的TCP和面向报文的UDP。
TCP:传输控制协议。TCP提供可靠交付的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复、并且按序到达。所以服务器和客户端的通讯使用TCP来完成。确保服务器作为“中转站”能够得到、存储、转发正确的客户信息。
UDP:用户数据报协议。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。因为客户端之间的通讯(聊天)对数据正确性的要求不是太高,偶尔出错也不会有太大的影响。
本课程设计采用TCP方式来实现网络聊天程序。
五、课程设计步骤
1、TCP网络聊天程序
TCP传输控制提供可靠的,有保证的通信质量,是面向连接的通信。因此,在通信之前,通信双方就得采用建立连接。TCP通信采取C/S(客户机/服务器)模式。需要分别编写客户端程序和服务器端程序。
1)服务器端程序编写步骤:
a)加载套接字库,创建套接字(WSAStartup()/socket());
b)绑定套接字到一个IP地址和一个端口上(bind());
c)将套接字设置为监听模式等待连接请求(listen());
d)请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());
e)用返回的套接字和客户端进行通信(send()/recv());
f)返回,等待另一连接请求;
g)关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
2)客户端程序编写步骤:
a)加载套接字库,创建套接字(WSAStartup()/socket());
b)向服务器发出连接请求(connect());
c)和服务器端进行通信(send()/recv());
d)关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
2、UDP网络聊天程序
与TCP不同,UDP在通信时并不要双方建立连接,它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和OICQ就是使用的UDP协议。因此,本设计同样采用UDP连接方式。
程序编写步骤:
a)加载套接字库,创建套接字(WSAStartup()/socket());
b)绑定套接字到一个IP地址和一个端口上(bind());
c)发送和接收数据(sendto()/recvfrom());
d)关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
六、程序流程图
TCP
七.实验总结(错误与解决方法)
1.必须先初始化Winsock DLL库,否则会显示错误代码:
WSASYSNOTREADY 网络通信依赖的网络子系统还没有准备好。WSAVERNOTSUPPORTED 所需的Windows Sockets API的版本未由特定的Windows Sockets实现提供。
2.窗口接收到数据包含“烫烫烫”,解决办法即用memset函数初始化数组:
memset(sendBuf,0,sizeof(sendBuf));
memset(recvBuf,0,sizeof(recvBuf));
3.使用该程序时注意先打开服务器,再打开客户端,否则无法正确连接。
4.注意引入ws2_32.lib库文件。
实验二:
一.题目:PING程序的设计与实现
二.实验目的:
PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。
三.实验原理:
ping的原理: Ping命令的主要作用是检测网络上主机的状态。要是在几年前,我们还可以下如此断言,如果不能Ping通某台主机,那么也就无法Telnet或者FTP到这台主机,但随着互联网的安全意识的增加,出现了访问控制清单的路由器和防火墙,由于ICMP报文是在IP数据包中被传输的,而到达一台主机不仅取决于IP层是否到达,还取决于使用何种协议和端口。
四. PING程序的实现过程
要实现ping程序,需要实现以下步骤:
1.创建协议类型为IPPROTO_ICMP的原始套接字,设置套接字属性。
2.创建并初始化ICMP封包。
3.调用sendto函数向远程主机发送ICMP请求。
4.调用recfrom函数接受ICMP响应