您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 通信专业《TCPIP技术》实验指导书
《TCP/IP技术》实验指导书钱萍编写适用专业:通信工程江苏科技大学_计算机科学与工程_学院2011年1月前言本课程是通信工程专业的一门专业课。通过学习主要使学生系统地了解TCP/IP协议工作原理及应用、Internet技术和应用知识,掌握网络编程的基本技能,学会网络应用程序的开发,将所学通信原理和计算机网络的基础理论知识融会贯通,初步掌握运用TCP/IP。为了加深和巩固学生对理论知识的理解,增强学生在网络编程方面的实际动手能力的培养,使学生能运用VC++为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。本课程设置了六个实验,具体实验项目为:(1)实验一网络应用程序基础;(2)实验二基于TCP协议的客户/服务器通信程序;(3)实验三WinInet实现FTP客户端;(4)实验四简易聊天系统的实现;(5)实验五电子邮件程序的设计与实现;(6)实验六PING程序的设计及实现。其中实验一到实验四是必开实验,实验五到实验六是选开实验。1目 录 前言..........................................................................0实验一:网络应用程序基础........................................1实验二:基于TCP协议的客户/服务器通信程序........8实验三:WinInet实现FTP客户端..............................14实验四简易聊天系统的实现..................................22实验五电子邮件程序的设计与实现......................29实验六PING程序的设计及实现.............................322实验一:网络应用程序基础实验学时:2学时实验类型:综合实验要求:必修一、实验目的通过在SDK模式下完成数据通信的过程,掌握WindowsSocket的常用函数的形式和使用方法,理解数据通信的过程。二、实验内容1.Winsock的启动与终止。2.Winsock的创建及绑定和关闭。3.建立通信连接listen及accept和connect。4.数据的传输。5.简单的客户机/服务器之间的通信。三、实验原理、方法和手段1.WindowsSockets的概念WindowsSockets顾名思义,它就是在Windows环境下使用的一套网络编程机制(或规范),常常简称为Winsock。该规范是在Windows操作系统下得到广泛应用的、开放的、支持多种协议的网络编程接口。已经成为Windows环境下网络编程事实上的标准。2.套接口的概念套接口可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点,这个端点是一个逻辑上的概念。通信时其中的一个网络应用程序将要传输的一段信息写入它所在主机的1Socket中,该Socket通过与网络接口卡(NetworkInterfaceCards,NIC)相连的传输介质将这段信息发送到另外一台主机的Socket中,使这段信息能传送到其他程序中。3.Winsock函数(1)WSAStartup()在调用任何一个WinsockAPI函数之前,都必须先检查协议栈的安装情况,也就是检查系统中是否有WindowsSockets的实现库。通过调用WSAStartup()函数便可检测系统中有没有一个或多个WindowsSockets的实现,本函数必须是应用程序或DLL调用的第一个WindowsSockets函数,它允许应用程序或DLL指明WindowsSocketsAPI的版本号及获得特定WindowsSockets实现的细节。函数格式:intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);(2)socket()应用程序在使用套接口通信之前,必须要拥有一个套接口。在Winsock中,要使用socket()或WSASocket()函数来给一个网络应用程序创建一个套接口。函数格式:在Winsock1中提供的格式是:SOCKETsocket(intaf,inttype,intprotocol);(3)bind()当用socket()创建了一个套接口后,该套接口还是不能直接使用的,因为它只存在于一个名字空间(地址族)中,也就是说它只确定了通信所希望使用的服务类型,并没有与该主机上提供服2务的某端口联系在一起,这样的套接口可以叫未命名的套接口。bind()函数通过给一个未命名的套接口分配一个本地名字,来为套接口建立本地绑定(即把一个套接口与一个主机地址和端口号联系起来)。本函数适用于数据报或流类套接口。函数格式:intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);(4)listen()当在一个服务器端程序中,用socket()函数成功创建了一个套接口,并用bind()函数和一个指定的地址关联(即绑定)在一起后,就要指示该套接口进入监听连接请求的状态,可以接收由客户端发出的连接请求,这时就要用WinsockAPI函数listen()。函数格式:intlisten(SOCKETs,intbacklog);(5)connect()在客户端当套接口建立好之后,就要调用connect()函数,提出与一个服务器建立连接的请求,如果服务器接受请求,就可以在服务器的远程套接口与客户端的本地套接口之间建立一条连接。函数格式:在Winsock1中提供的格式是:intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);(6)accept()在服务器端通过listen()函数调用表示服务器进入监听客户的3连接请求状态,而在服务器端调用accept()函数表示可以接收来自客户端由connect()发出的连接请求。函数格式:在Winsock1中提供的格式是:SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);(7)send()或WSASend()在已经建立连接的套接口上发送数据,可以使用send()或WSASend()函数。函数格式:在Winsock1中提供的格式是:intsend(SOCKETs,constcharFAR*buf,intlen,intflags);(8)recv()函数或WSARecv()对于已建立连接的套接口来说,要从套接口上接收数据,就要使用recv()函数或WSARecv()。函数格式:在Winsock1中提供的格式是:intrecv(SOCKETs,charFAR*buf,intlen,intflags);(9)recvfrom()函数或WSARecvfrom()对于无连接的套接口来说,要从套接口上接收一个数据报并保存发送数据的源地址,就要使用recvfrom()函数或WSARecvfrom()函数。在Winsock1中提供的格式是:intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen);4(10)sendto()函数或WSASendTo()对于无连接的套接口来说,要从套接口上发送一个数据报,就要使用sendto()函数或WSASendTo()函数。在Winsock1中提供的格式是:intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen);(11)closesocket()在网络程序中,一个套接口不再使用时一定要关闭这个套接口,以释放与该套接口关联的所有资源,包括等候处理的数据。intclosesocket(SOCKETs);(12)WSACleanup()当在应用程序中不再使用WinsockAPI中任何函数时,必须调用WSACleanup()将其从WindowsSockets的实现中注销,以释放为应用程序或DLL分配的任何资源。因此,对应于一个任务进行的每一次WSAStartup()调用,必须有一个WSACleanup()调用,因为每次WSAStartup()函数的调用都会增加对加载WinsockDLL的引用次数,它要求调用同样多次的WSACleanup()调用,以此抵消引用次数。intWSACleanup(void);四、实验组织运行要求1.学生在进行实验前必须进行充分的预习,熟悉实验内容;2.学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理;3.要求独立完成实验,教师可以给予一定的辅导;4.教师检查学生的实验结果;55.综合评定学生的实验成绩。五、实验条件计算机、局域网环境、VC++6.0开发环境六、实验步骤1.编程实现服务器端程序;2.编程实现客户端程序;3.分别运行客户端和服务器端程序,进行联调;4.记录实验结果。七、思考题什么是网络字节顺序?Winsock中与字节顺序转换相关的函数有哪几些?八、实验报告1.实验预习在实验前每位学生都需要对本次实验进行认真的预习,并写好预习报告,在预习报告中要写出实验目的、要求、实验步骤和主要代码。2.实验记录通过截图认真记录实验运行结果。3.实验报告对实验的主要源程序和实验记录中记录的实验结果进行分析。对实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、分析和总结。回答思考题,提出实验结论或提出自己的看法等。九、其它说明学生在实验过程中应遵守实验室的各项规章制度,注意人身6和设备安全,配合和服从实验室人员管理。7实验二:基于TCP协议的客户/服务器通信程序实验学时:2学时实验类型:设计实验要求:必修一、实验目的理解TCP通信程序设计过程,并结合特定应用场景(如创建留言板程序、创建多客户端服务器/客户通信程序等)完成程序开发。掌握TCP服务器程序和客户程序的创建过程,熟悉单播通信程序中用到的Winsock接口,培养学生将所学知识进行灵活运用的能力。二、实验内容1.主机间TCP的性能测试之一:回程时延。2.服务器端能从客户端接收数据并立即将接收到的数据原样返回给客户方。3.客户端能往服务器端发送数据,然后立即接受从服务器端原样返回的数据。三、实验原理、方法和手段基于C/S结构的程序在工作时,服务器的应用程序应该首先启动,并一直等待客户的服务请求。其具体工作流程可分为以下8个步骤。第一步:使用WSAStartup()函数检查系统协议栈的安装情况。常用的调用格式有如下两种:8WSAStartup(0x0202,&wsaData)。WSAStartup(MAKEWORD(2,2),&wsaData)。第二步:使用Socker()或WSASocket()函数创建服务器通信的套接口。常用的调用格式如下:SOCKETserverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);SOCKETserverSocket=socket(AF_INET,SOCK_STREAM,0);SOCKETserverSocket=WSAsocket(AF_INET,SOCK_STREAM,IPPROTO_TCPNULL,0,WSA_FLAG_OVERLAPPED);第三步:使用bind()函数将创建的套接口与服务器地址绑定。常用的调用格式如下:Bind(serverSocket,(conststructsockaddr*)&localaddr,sizeof(sockaddr));Bind(serverSocket,(SOCKADDR*)&localaddr,sizeof(sockaddr));Bind(serverSocket,(sockaddr*)&localaddr,sizeof(sockaddr));Bind(
本文标题:通信专业《TCPIP技术》实验指导书
链接地址:https://www.777doc.com/doc-320859 .html