通信专业《TCPIP技术》实验指导书.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《通信专业《TCPIP技术》实验指导书.pdf》由会员分享,可在线阅读,更多相关《通信专业《TCPIP技术》实验指导书.pdf(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 TCP/IP 技术 实 验 指 导 书 实 验 指 导 书 钱 萍 编 写 适用专业:通信工程 江苏科技大学_计算机科学与工程_学院 2011 年 1 月 前前 言言 本课程是通信工程专业的一门专业课。通过学习主要使学生系统地了解 TCP/IP 协议工作原理及应用、Internet 技术和应用知识,掌握网络编程的基本技能,学会网络应用程序的开发,将所学通信原理和计算机网络的基础理论知识融会贯通,初步掌握运用 TCP/IP。为了加深和巩固学生对理论知识的理解,增强学生在网络编程方面的实际动手能力的培养,使学生能运用VC+为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。本
2、课程设置了六个实验,具体实验项目为:(1)实验一 网络应用程序基础;(2)实验二 基于 TCP 协议的客户/服务器通信程序;(3)实验三 WinInet 实现 FTP 客户端;(4)实验四 简易聊天系统的实现;(5)实验五 电子邮件程序的设计与实现;(6)实验六 PING 程序的设计及实现。其中实验一到实验四是必开实验,实验五到实验六是选开实验。1目目 录录 前 言.0 实验一:网络应用程序基础.1 实验二:基于TCP协议的客户/服务器通信程序.8 实验三:WinInet实现FTP客户端.14 实验四 简易聊天系统的实现.22 实验五 电子邮件程序的设计与实现.29 实验六 PING程序的设计
3、及实现.32 2实验一:网络应用程序基础实验一:网络应用程序基础 实验学时:2 学时 实验类型:综合 实验要求:必修 一、实验目的一、实验目的 通过在 SDK 模式下完成数据通信的过程,掌握 Windows Socket的常用函数的形式和使用方法,理解数据通信的过程。二、实验内容二、实验内容 1.Winsock 的启动与终止。2.Winsock 的创建及绑定和关闭。3.建立通信连接 listen 及 accept 和 connect。4.数据的传输。5.简单的客户机/服务器之间的通信。三、实验原理、方法和手段三、实验原理、方法和手段 1.Windows Sockets 的概念 Windows
4、Sockets 顾名思义,它就是在 Windows 环境下使用的一套网络编程机制(或规范),常常简称为 Winsock。该规范是在Windows 操作系统下得到广泛应用的、开放的、支持多种协议的网络编程接口。已经成为 Windows 环境下网络编程事实上的标准。2.套接口的概念 套接口可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点,这个端点是一个逻辑上的概念。通信时其中的一个网络应用程序将要传输的一段信息写入它所在主机的1 Socket 中,该 Socket 通过与网络接口卡(Network Interface Cards,NIC)相连的传输介质将这段信息发送到另外一台主机的
5、Socket中,使这段信息能传送到其他程序中。3.Winsock 函数(1)WSAStartup()在调用任何一个 Winsock API 函数之前,都必须先检查协议栈的安装情况,也就是检查系统中是否有Windows Sockets的实现库。通过调用 WSAStartup()函数便可检测系统中有没有一个或多个Windows Sockets 的实现,本函数必须是应用程序或 DLL 调用的第一个 Windows Sockets 函数,它允许应用程序或 DLL 指明 Windows Sockets API 的版本号及获得特定 Windows Sockets 实现的细节。函数格式:int WSASta
6、rtup(WORD wVersionRequested,LPWSADATA lpWSAData);(2)socket()应用程序在使用套接口通信之前,必须要拥有一个套接口。在 Winsock 中,要使用 socket()或 WSASocket()函数来给一个网络应用程序创建一个套接口。函数格式:在 Winsock 1 中提供的格式是:SOCKET socket(int af,int type,int protocol);(3)bind()当用 socket()创建了一个套接口后,该套接口还是不能直接使用的,因为它只存在于一个名字空间(地址族)中,也就是说它只确定了通信所希望使用的服务类型,并没
7、有与该主机上提供服 2务的某端口联系在一起,这样的套接口可以叫未命名的套接口。bind()函数通过给一个未命名的套接口分配一个本地名字,来为套接口建立本地绑定(即把一个套接口与一个主机地址和端口号联系起来)。本函数适用于数据报或流类套接口。函数格式:int bind(SOCKET s,const struct sockaddr FAR*name,int namelen);(4)listen()当在一个服务器端程序中,用 socket()函数成功创建了一个套接口,并用 bind()函数和一个指定的地址关联(即绑定)在一起后,就要指示该套接口进入监听连接请求的状态,可以接收由客户端发出的连接请求,
8、这时就要用 Winsock API 函数 listen()。函数格式:int listen(SOCKET s,int backlog);(5)connect()在客户端当套接口建立好之后,就要调用 connect()函数,提出与一个服务器建立连接的请求,如果服务器接受请求,就可以在服务器的远程套接口与客户端的本地套接口之间建立一条连接。函数格式:在 Winsock 1 中提供的格式是:int connect(SOCKET s,const struct sockaddr FAR*name,int namelen);(6)accept()在服务器端通过 listen()函数调用表示服务器进入监听客
9、户的 3连接请求状态,而在服务器端调用 accept()函数表示可以接收来自客户端由 connect()发出的连接请求。函数格式:在 Winsock 1 中提供的格式是:SOCKET accept(SOCKET s,struct sockaddr FAR*addr,int FAR*addrlen);(7)send()或 WSASend()在已经建立连接的套接口上发送数据,可以使用 send()或WSASend()函数。函数格式:在 Winsock 1 中提供的格式是:int send(SOCKET s,const char FAR*buf,int len,int flags);(8)recv(
10、)函数或 WSARecv()对于已建立连接的套接口来说,要从套接口上接收数据,就要使用 recv()函数或 WSARecv()。函数格式:在 Winsock 1 中提供的格式是:int recv(SOCKET s,char FAR*buf,int len,int flags);(9)recvfrom()函数或 WSARecvfrom()对于无连接的套接口来说,要从套接口上接收一个数据报并保 存 发 送 数 据 的 源 地 址,就 要 使 用recvfrom()函 数 或WSARecvfrom()函数。在 Winsock 1 中提供的格式是:int recvfrom(SOCKET s,char
11、FAR*buf,int len,int flags,struct sockaddr FAR*from,int FAR*fromlen);4(10)sendto()函数或 WSASendTo()对于无连接的套接口来说,要从套接口上发送一个数据报,就要使用 sendto()函数或 WSASendTo()函数。在 Winsock 1 中提供的格式是:int sendto(SOCKET s,const char FAR*buf,int len,int flags,const struct sockaddr FAR*to,int tolen);(11)closesocket()在网络程序中,一个套接口不
12、再使用时一定要关闭这个套接口,以释放与该套接口关联的所有资源,包括等候处理的数据。int closesocket(SOCKET s);(12)WSACleanup()当在应用程序中不再使用 Winsock API 中任何函数时,必须调用 WSACleanup()将其从 Windows Sockets 的实现中注销,以释放为应用程序或 DLL 分配的任何资源。因此,对应于一个任务进行的每一次 WSAStartup()调用,必须有一个 WSACleanup()调用,因为每次 WSAStartup()函数的调用都会增加对加载 Winsock DLL 的引用次数,它要求调用同样多次的 WSAClean
13、up()调用,以此抵消引用次数。int WSACleanup(void);四、实验组织运行要求四、实验组织运行要求 1学生在进行实验前必须进行充分的预习,熟悉实验内容;2学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;3要求独立完成实验,教师可以给予一定的辅导;4教师检查学生的实验结果;55综合评定学生的实验成绩。五、实验条件五、实验条件 计算机、局域网环境、VC+6.0 开发环境 六、实验步骤六、实验步骤 1.编程实现服务器端程序;2.编程实现客户端程序;3.分别运行客户端和服务器端程序,进行联调;4.记录实验结果。七、思考题七、思考题 什么是网络字节顺序?W
14、insock 中与字节顺序转换相关的函数有哪几些?八、实验报告八、实验报告 1实验预习 在实验前每位学生都需要对本次实验进行认真的预习,并写好预习报告,在预习报告中要写出实验目的、要求、实验步骤和主要代码。2实验记录 通过截图认真记录实验运行结果。3实验报告 对实验的主要源程序和实验记录中记录的实验结果进行分析。对实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、分析和总结。回答思考题,提出实验结论或提出自己的看法等。九、其它说明九、其它说明 学生在实验过程中应遵守实验室的各项规章制度,注意人身 6和设备安全,配合和服从实验室人员管理。7实验二:基于实验二:基于 TCP 协议的客户
15、协议的客户/服务器通信程序服务器通信程序 实验学时:2 学时 实验类型:设计 实验要求:必修 一、实验目的一、实验目的 理解 TCP 通信程序设计过程,并结合特定应用场景(如创建留言板程序、创建多客户端服务器/客户通信程序等)完成程序开发。掌握 TCP 服务器程序和客户程序的创建过程,熟悉单播通信程序中用到的 Winsock 接口,培养学生将所学知识进行灵活运用的能力。二、实验内容二、实验内容 1.主机间 TCP 的性能测试之一:回程时延。2.服务器端能从客户端接收数据并立即将接收到的数据原样返回给客户方。3.客户端能往服务器端发送数据,然后立即接受从服务器端原样返回的数据。三、实验原理、方法
16、和手段三、实验原理、方法和手段 基于 C/S 结构的程序在工作时,服务器的应用程序应该首先启动,并一直等待客户的服务请求。其具体工作流程可分为以下 8 个步骤。第一步:使用 WSAStartup()函数检查系统协议栈的安装情况。常用的调用格式有如下两种:8 WSAStartup(0 x0202,&wsaData)。WSAStartup(MAKEWORD(2,2),&wsaData)。第二步:使用 Socker()或 WSASocket()函数创建服务器通信的套接口。常用的调用格式如下:SOCKET serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_
17、TCP);SOCKET serverSocket=socket(AF_INET,SOCK_STREAM,0);SOCKET serverSocket=WSAsocket(AF_INET,SOCK_STREAM,IPPROTO_TCP NULL,0,WSA_FLAG_OVERLAPPED);第三步:使用 bind()函数将创建的套接口与服务器地址绑定。常用的调用格式如下:Bind(serverSocket,(const struct sockaddr*)&localaddr,sizeof(sockaddr);Bind(serverSocket,(SOCKADDR*)&localaddr,size
18、of(sockaddr);Bind(serverSocket,(sockaddr*)&localaddr,sizeof(sockaddr);Bind(serverSocket,(LPSOCKADDR*)&localaddr,sizeof(sockaddr);第四步:使用 listen()函数使服务器套接口做好接收连接请求的准备。常用的调用格式如下:Lister(serverSOcket,queuelen);第五步:使用 accpet()或 WSAAccept()函数来接收来自客户端由 connect()发出的连接请求。常用的调用格式如下:SOCKET Newsock=accpet(server
19、Socket,(stryct,sockaddr*)&clientaddr,&clientaddr_len);第六步:建立连接后,使用 send()或者 WSASend()函数来发送数据,或使用 recv()或 WSARecv()函数接收数据。第七步:使用 closesocket()函数关闭套接口。常用的调用格式如下:9Closesocket(serverSocket);第八步:最后调用 WSACleanup()函数,结束 Windows Socket API 使用。至此,服务器的工作过程结束。常用的调用格式如下:WSACleanup();客户端应用程序的工作流程如下 第一步:使用 WSAStr
20、artup()函数检查系统协议栈的安装情况。其调用格式与服务器端调用格式类似。第二步:使用 socket()或 WSASocket()函数创建客户端套接口。其调用格式与服务器端调用格式类似。第三步:使用 connect()或 WSAConnect()函数发出与服务器建立连接的请求。常用的调用格式如下:Conect(clientSocket,(struct sockaddr*,sizeof(serveraddr);第四步:连接建立后使用 send()或 WSASend()函数发送数据,或使用recv()或 WSARecv()函数接收数据。第五步:使用 closesocket()函数关闭套接口。第
21、六步:最后调用 WSACleanup()函数,结束 Windows Socket API 使用。至此,一次客户向服务器请求服务的过程结束。服务器与客户端通信的过程需要一个五元组来标识。这个五元组是(协议,本地地址,本地端口号,远地地址,远地端口号)服务器与客户机进行的上述通信过程如图 2-1 所示。10交换数据 WSAStartup()socket()bind()listen()等待客户连接请求的到来 accpet()WSACleanup()recv()send()closesocket()WSAStartup()socket()connect()send()recv()closesocket
22、()WSACleanup()用三次握手过程建立TCP连接 交换数据 关闭 TCP 连接 图 2-1 面向连接的客户机-服务器程序工作模型 四、实验组织运行要求四、实验组织运行要求 1学生在进行实验前必须进行充分的预习,熟悉实验内容;2学生严格遵守实验室的各项规章制度,注意人身和设备安 11全,配合和服从实验室人员管理;3要求独立完成实验,教师可以给予一定的辅导;4教师检查学生的实验结果;5综合评定学生的实验成绩。五、实验条件五、实验条件 计算机、局域网环境、VC+6.0 开发环境 六、实验步骤六、实验步骤 1.编程实现基于 TCP 协议的服务器端程序;2.编程实现基于 TCP 协议的客户端程序
23、;3.分别运行客户端和服务器端程序,进行联调;4.记录实验结果。七、思考题七、思考题 Winsock 中与建立连接有关的函数有哪几个?分别实现什么功能?八、实验报告八、实验报告 1实验预习 在实验前每位学生都需要对本次实验进行认真的预习,并写好预习报告,在预习报告中要写出实验目的、要求、实验步骤和主要代码。2实验记录 通过截图认真记录实验运行结果。3实验报告 对实验的主要源程序和实验记录中记录的实验结果进行分析。对实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、分析和总结。回答思考题,提出实验结论或提出自 12己的看法等。九、其它说明九、其它说明 学生在实验过程中应遵守实验室的各
24、项规章制度,注意人身和设备安全,配合和服从实验室人员管理。13实验三:实验三:WinInet 实现实现 FTP 客户端客户端 实验学时:2 学时 实验类型:设计 实验要求:必修 一、实验目的一、实验目的 通过本实验深入地了解 FTP 的工作原理以及服务器端和客户端的工作流程,学习Socket在网络编程中的各种应用,掌握WinInet的套接字编程。二、实验内容二、实验内容 1.开发 FTP 的客户端。2.完成在局域网内的测试。三、实验原理、方法和手段三、实验原理、方法和手段 1.WinInet 编程的简介 WinInet(Win32 Internet Extensions)为编写 Interne
25、t 客户端提供专门的接口。WinInet 是比 Winsock 更高层的接口,它只适合于编写 HTTP、FTP 和 Gopher 三种客户端应用程序。Visual C+提供了两种使用 WinInet 的方法:一种是直接调用 Win32 Internet 函数;另一种是使用 MFC WinInet 类来使用 WinInet。2.基本 WinInet 函数(1)打开一个 WinInet 对话 大 多 数 的 WinInet 函 数 在 使 用 之 前,必 须 首 先 调 用InternetOpen()函数,以打开一个新的对话,然后在调用其他函数时 14以该函数返回的句柄为做为输入参数,只有这样才可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCPIP技术 通信 专业 TCPIP 技术 实验 指导书
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内