计算机网络课程设计报告-文件传输协议的简单设计与实现_第1页
计算机网络课程设计报告-文件传输协议的简单设计与实现_第2页
计算机网络课程设计报告-文件传输协议的简单设计与实现_第3页
计算机网络课程设计报告-文件传输协议的简单设计与实现_第4页
计算机网络课程设计报告-文件传输协议的简单设计与实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告2014—2015学年第一学期课程名称计算机网络设计题目文件传输协议的简单设计与实现目录摘要: -3-一、设计任务 -3-1、课程设计内容 -3-2、课程设计的基本要求 -4-二、设计基本思路及相关理论 -4-1、TCP/IP协议 -4-2、客户机/服务器模型 -5-3、套接字编程 -5-4、设计基本思路 -7-三、程序设计及功能 -7-四、程序运行说明及功能 -12-五、截图 -14-六、心得体会 -17-七、参考文献 -17-文件传输协议的简单设计与实现摘要:当前许多应用要求实现文件从一个计算机传送到另一个计算机中,这在internet迅速偶记的网络环境中显得尤为突出。文件传送也是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP网络体系结构之上,在windowsXP操作系统平台上使用visualC++6.0编程环境,使用socket编程接口编写两个程序,分别为客户程序(ftpclient.c)和服务器程序(ftpserver.c),实现下述命令功能:get,put,pwd,dir,cd,?,quit等,利用了已有网络环境设计并实现简单应用层协议。关键字:文件传输TCP/IP一、设计任务1、课程设计内容文件传输协议的简单设计与实现:学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧,加深对客户/服务器的工作模式的认识。用socket编程接口编写两个程序,分别为客户程序(ftpclient.cpp)和服务器程序(ftpserver.cpp),该程序应能实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示远主当前目录dir:列出远方当前目录cd:改变远方当前目录?:显示你提供的命令quit:退出返回2、课程设计的基本要求eq\o\ac(○,1).巩固和加深对计算机网络原理的理解,提高综合运用本课程所学知识的能力。eq\o\ac(○,2).培养选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。eq\o\ac(○,3).通过实际分析设计、编程调试,掌握计算机网络通信的基本规程,以及协议的利用方法,体会体系结构分层的思路。eq\o\ac(○,4).能够按要求编写课程设计报告书,能正确阐述设计和设计结果、正确绘制系统和程序框图。eq\o\ac(○,5).通过课程设计,培养严谨的科学态度,严肃认真的工作作风,和团队协作精神。二、设计基本思路及相关理论1、TCP/IP协议TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。TCP提供的是一种可靠的数据流服务,采用一种称为“滑动窗口”的方式进行流量控制。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。2、客户机/服务器模型网络应用层程序一般都是以客户机/服务器模型的方式工作的,而因特网便是客户机/服务器模型的一个典型应用。在这种工作方式中,一个服务器程序先启动,并在一个熟知端口侦听对服务器的请求,当客户机应用程序需要某种服务时,须向提供这种服务的服务器发出请求,服务器在接收到请求后,向客户机发出响应请求信息。这样客户机用用程序和服务器程序之间变建立了连接,此后可以进行数据通信。通信任务完成后需要关闭它们之间的通信连接。图1客户机/服务器模型的工作流程3、套接字编程TCP/IP的核心内容被封装在操作系统中,网络应用程序要使用TCP/IP来使用自己的功能,可以通过由操作系统提供给用户的TCP/IP编程接口来实现。因此,设计网络应用程序的过程就是利用网络编程接口进行程序设计的过程。套接字就是TCP/IP网络编程接口的集合,它是应用程序与TCP/IP协议族通信的中间软件抽象层,其中包括了许多函数或例程。程序员可以用他们来开发网络应用程序。其编程模型见图2。图2面向连接的客户机/服务器程序工作模型4、设计基本思路设计程序使客户端连接的时候,服务器将会向客户端发回一条消息告知它的IP地址,然后关闭连接并继续接收端口的连接。建立各个命令功能对应的函数,发送请求,等待服务器端的服务。服务器端初始化WinSock,创建SOCKET,获取主机信息,并对客户端进行会话,发送回复讯息给客户端,响应完毕后关闭连接,释放WinSock。模拟TCP/IP协议的工作模式,在双方工作的时候开设一个熟知端口(4523),进行数据的传送与接收。模拟TCP工作机制,确定数据端口传送数据时,进行分组传送。服务器从打开开始,保持监听控制端口,当用户登陆成功后,主动分配该用户服务线程。在传送数据的时候,为了确保不影响原程序的工作,应独立分配线程。本设计基本图如下:三、程序设计及功能本程序使用端口号为:4523。客户机端程序(ftpclient。cpp),服务器端程序(ftpserver.cpp)。程序实现文件的上传与下载。能够在运行服务器程序的PC机上下载相应的文件,也能像PC机上上传文件。图3程序流程图●初始化WinSock利用WinSock编程,不论是客户机程序还是服务器程序,首先要做的都是利用WSAStartup函数初始化WinSock,只有WinSock正确初始化后,WinSock的相关函数才能使用。其实现代码如下: if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) { printf("sockinitfail!\n"); return(-1); }●创建本地套接字在网络应用程序之间的通信是通过套接字来实现的,连个网络应用程序之间的每条通信链路两端都需要有相应的套接字,并且服务器程序还需要一个侦听套接字来接收客户机程序的连接请求。因此,在设计网络应用程序时,都必须创建自己的本地套接字,对于服务器层序来说既要创建侦听套接字,在接收到客户机程序的连接请求后还需要建立与该客户机程序的通信连接套接字。客户机:客户机程序中的通信套接字既可以显示指定IP和端口,也可以由系统自动指定,实现代码如下:eq\o\ac(○,1)、创建用于连接的套接字 sockClient=socket(AF_INET,SOCK_STREAM,0); if(sockClient==INVALID_SOCKET) { printf("sockcreatefail!\n"); WSACleanup(); return(-1); } addrServer.sin_family=AF_INET; addrServer.sin_addr.s_addr=inet_addr(IP); addrServer.sin_port=htons(PORT);eq\o\ac(○,2)、请求连接服务器 if(connect(sockClient,(structsockaddr*)&addrServer,sizeof(addrServer))==SOCKET_ERROR) { printf("Connectfail\n"); memset(IP,0,20); return(-2); }服务器:服务器程序可能存在多个套接字。由于侦听套接字往往需要使用熟知端口,因此侦听套接字一般需要与本地IP和端口号进行显示绑定,其实现代码如下:eq\o\ac(○,1)、创建用于侦听的套接字 sockSrv=socket(AF_INET,SOCK_STREAM,0); if(sockSrv==SOCKET_ERROR) { printf("socketcreatefailed!\n"); WSACleanup(); return(-1); }eq\o\ac(○,2)、指定IP地址和端口号 SOCKADDR_INaddrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_port=htons(PORT); addrSrv.sin_family=AF_INET;eq\o\ac(○,3)、绑定本机主机IP和端口号 if(bind(sockSrv,(structsockaddrFAR*)&addrSrv,sizeof(addrSrv))==SOCKET_ERROR) { printf("BindError"); return(-1); }●侦听侦听即服务器程序进入等待客户机程序连接请求的状态,往往通过一个具有熟知端口的套接字来等待客户机程序的连接请求。该过程通过WinSock中的listen函数来实现。核心代码如下: if(listen(sockSrv,5)<0){ printf("Listenerror!"); return(-1); }●建立连接建立连接的请求首先由客户机程序利用connect函数向服务器程序中的侦听套接字提出,当侦听套接字得到客户机程序的连接请求后,可以利用accept函数接收其请求,并得到一个与该客户机请求相对应的连接套接字。这样,双方便建立了通信连接。由于考虑到服务器程序可能需要与多个客户机程序建立不同的通信连接。因此在服务器程序中往往通过循环来实现对客户机连接请求的响应。服务器程序实现代码如下:服务器程序连接请求:While(1){ SOCKETsockconn=accept(sockSrv,(SOCKADDR*)&addrclient,&len); if(sockconn==INVALID_SOCKET) continue; elseprintf("connectingfromclient\n");}响应成功后,accept函数将返回一个连接套接字,以后服务程序便可利用该套接字与相应的客户机程序之间进行数据传递操作。●数据传递当通信双方建立了通信连接后,便可以通过各自的连接套接字进行数据的发送(send)与接收(recv)操作。服务器端程序接收客户机程序发过来的数据,代码如下: if(recv(sockconn,buf_rec,1024,0)<=0) { break; }客户机程序则在连接请求成功后,向服务器发送相应的信息,对于本设计而言,就是对服务器端发送相应的命令操作。并接收服务器发送过来的处理信息。代码如下: if(send(sockClient,buf_send,sizeof(buf_send),0)<0) { cout<<"senddataerror!"<<endl; closesocket(sockClient); WSACleanup(); return0; } if(strncmp(command,"quit",4)==0) { closesocket(sockClient); WSACleanup(); return0; }//quit recv(sockClient,buf_rec,1024,0); cout<<buf_rec<<endl;●关闭连接当通信双方通信完成后,便可以利用closesocket函数来关闭连接套接字,以关闭所建立起来的通信连接并四方相关资源。实现代码在服务器程序与客户机程序中都类似,只是所关闭的练级套接字不同,代码如下:客户机:closesocket(sockClient);服务器:closesocket(sockconn);●关闭侦听如果服务器要退出侦听,则可以利用closesocket函数来关闭侦听套接字,代码如下:closesocket(socksrv);●终止WinSock在通信双方结束运行之前,需要调用WSACleanup函数来终止WinSock,以便释放WINSock所占据的相关系统资源,代码如下:WSACleanup();四、程序运行说明及功能先运行服务器端程序进行侦听运行客户机程序。eq\o\ac(○,1)、输入“?”或“help”显示命令菜单eq\o\ac(○,2)、输入服务器端IP地址进行连接。若服务器端程序与客户机程序是在同一台PC机上运行的,则此时输入的服务器端IP地址应为;若服务器端程序与客户机程序在不同的PC机上运行,则此时输入的服务器端的IP地址应为运行服务器程序的PC机的IP地址,如:。如果与服务器连接成功,则在服务器端显示”connectingfromclient”。eq\o\ac(○,3)、输入要执行的命令。本程序可以完成六个简单命令的操作。六个命令:●dir命令此命令可以显示出当前目录中的所有文件列表。●cd命令cd+路径名。切换到某个指定的路径下,路径可以是相对路径也可以是绝对路径。●pwd命令显示当前工作路径。●get命令get+文件名。从服务器上下载文件到客户机程序那个相应目录中,如:C:\DocumentsandSettings\Administrator\桌面\计算机网络课程设计\FTP\ftpclient。●put命令put+文件名。将客户机程序所在目录(如:C:DocumentsandSettings\Administrator\桌面\计算机网络课程设计\FTP\ftpclient\)下的某个文件上传到运行服务器端程序PC机上的某个目录下。●quit命令此命令客户机关闭WinSock连接,并与服务器的断开连接,。服务器端受到该命令后会先关闭侦听,再关闭WinSock连接。eq\o\ac(○,4)、服务器接收到客户机发送过来的命令操作请求,在服务器端显示“thecommandis….”,执行相应的操作,并将结果发送给客户机。在客户机上显示相应的结果。五、截图1、程序执行前C:DocumentsandSettings\Administrator\桌面\计算机网络课程设计\FTP\ftpcli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论