文件传输协议的(C语言)实现_第1页
文件传输协议的(C语言)实现_第2页
文件传输协议的(C语言)实现_第3页
文件传输协议的(C语言)实现_第4页
文件传输协议的(C语言)实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计: FTP的设计与实现一、目的互联网提供了许多种类的网络服务. 这些服务实际上是应用层的服务。的。 FTP服务是基于TCP协议的网络服务。文件传输是由各种计算机网络实现的基本功能,以及文件传输协议是最基本的应用层协议. 通过完成一个文件传输协议FTP的实现,利用现有网络环境设计简单的应用层协议,并掌握TCP/IP网络应用的基本设计方法和实现技术。二、内容和要求两人一组,分别实现FTP协议客户端程序和服务器程序。客户端程序具有文件列表、文件下载、文件上传等通用功能。 服务器程序支持修改一般服务,如工作目录、文件列表和下载文件。由于FTP协议相对复杂,为了简单起见,客户端只实现FTP客户端

2、协议的子集,通常具有以下功能l连接到指定的FTP服务器l断开与主机的连接进入l子目录结束l子目录。列出l服务器当前目录中的所有文件l从服务器本地下载指定的文件(可以同时指定多个文件,连续下载)l将指定的文件从本地上传到服务器要实现这些功能,需要以下FTP命令l USER usernamelpasswordl CWD目录名称l端口主机端口l类型或Il retr文件名l STOR filenamel LIST directory用户界面必须可以输入程序的以下信息:的:l服务器主机名l用户名、密码l数据的传输类型l要访问的服务器目录l要下载的远程文件名l要上载的本地文件名和远程文件名另外,接口向用户

3、输出以下信息l FTP服务器上的文件和目录列表l服务器的响应使用套接字进行客户端/服务器编程的一般连接步骤是:服务器端监听端口是否有连接请求,客户端向服务器端发出连接(连接)请求,服务器端向客户端。 建立连接。 Server端和客户端端都可以用Send、Write等方法与对方通信。对于具有完整功能的插座,包含以下基本结构。 那个操作步骤由以下4个基本步骤构成(1)制作插座(2)打开连接在插座上的输入输出流(3)根据一定的协议读写插座(4)关闭插座第三步骤是程序员调用插座以实现程序功能的重要步骤,其他三个步骤在各种程序中基本上相同。client.c.c.c.c.c.c.c.c.c.c.c.c.c

4、.c.c.c.c.c.c.c.c.c.c.c.c#include#include#include#pragma comment(lib, ws2_32.lib )#define DEFAULT_PORT 2302#define DEFAULT_BUFFER 2048# define default _ message thisisatestoftheemergencybroadcasting system charszzserverip 128 /servertoconnecttoSZ消息 1024 ; /Message to send to severint iPort=DEFAULT_PO

5、RT; /Port on server to connect to/DWORD dwCount=DEFAULT_COUNT; /Number of times to send messageBOOLbSendOnly=FALSE; /Send data only; dontdereceiveint dirfun ();int getfun ();int putfun ();int pwdfun ();int cdfun ();int mdfun ();int delfun ();int usafun ();void usage ()举止打印(使用:客户端-p : x -s : IP -n :

6、x -o nn );printf (-p : xremoteporttossendton );printf (-s : ipserversipaddressornostnamen );printf (-n : xnumberoftimestossendmessagen );仅打印(-o send消息; dontreceiven );ExitProcess(1)以下void ValidateArgs(int argc,char *argv )举止PS;for(i=1; i argc; PS )举止if (argv I 0=-|(argv I 0=/) )举止交换机(到下部(argv I 1 )举

7、止case p :/远程端口PS (PS I ) 3iPort=atoi(argvi3 );break;case s: /ServerPS (PS I ) 3strcpy (SZ服务器IP,argvi3 );break;casen :/numberoftimestossendmessagePS (PS I ) 3/dwCount=atol(argvi3 );break;case o :/只读消息; dontdereceivebSendOnly=TRUE;break;default:usage ();break;以下以下以下以下int main(int argc,char *argv )举止WS

8、ADATA wsd;SOCKET sClient;char SZ buffer 默认_ buffer ;int ret;/unsigned int i;/int j;struct sockaddr_in server;结构主机*主机=空值;char choice5、choice240;/parsethecommandlineandloadwinsock/argv1=-s: ;strcpy (SZ服务器IP,argv13 );/ValidateArgs(argc,argv )PS (PS word (2,2 ),wsd )!=0)举止打印( failedtoloadwinsoc

9、klibrary! )n );返回1;以下/strcpy (SZ消息,DEFAULT_MESSAGE )/Create the socket,and attempt to connect to the server/sClient=socket(AF_INET,SOCK_STREAM,ipro_tcp )if (sClient=INVALID_SOCKET )举止printf ( socket ()故障: % dn ,WSAGetLastError ();返回1;以下server.sin_family=AF_INET;server.sin_port=htons(iPort )printf(se

10、rver.sin_port=%un ,server.sin_port );server.sin _ addr.s _ addr=inet _ addr (SZ server IP )/ifthesuppliedserveraddresswasntintheform/ AAA.BBB.CCC.DDD its a hostname,so try to resolve it/if (server.sin _ addr.s _ addr=inad _ none )举止主机=gethostbyname (SZ服务器IP )if (主机=空)举止打印( unabletoresolveserver : %

11、sn ,SZ服务器IP;返回1;以下复制存储器(server.sin _ addr,host-h_addr_list0 )主机- h _ length;以下if (连接(sclients ) (结构套接字* )服务器sizeof(server)=SOCKET_ERROR举止printf ( connect () failed : % dn ,WSAGetLastError ();返回1;以下/显示接通信息/for(j=0; j2; j )/举止ret=recv(sClient,szBuffer,DEFAULT_BUFFER,0 )if (ret=0) /Graceful close返回0;el

12、se if (ret=SOCKET_ERROR )举止printf ( recv ()故障: % dn ,WSAGetLastError ();返回0;以下SZ缓冲器 ret =0;打印( % sn ,SZ缓冲器);PS (PS 15 )举止ret=recv(sClient,szBuffer,DEFAULT_BUFFER,0 )if (ret=0) /Graceful close返回0;else if (ret=SOCKET_ERROR )举止/printf ( recv ()故障: % dn ,WSAGetLastError ();返回0;以下SZ缓冲器 ret =0;打印( % sn ,S

13、Z缓冲器);以下/printf(DEFAULT_BUFFER=%dn ,DEFAULT_BUFFER );以下while(1)举止A- );printf(ftp );扫描( % s ,choice );if (strncmp ( dir ,3 )=|strncmp ( dir ,2)=0)举止dirfun(sclelint )继续;以下else if (strncmp ( pwd ,3)=0|strncmp ( pwd ,3 )=0)举止pwdfun(sclelint )继续;以下else if(strncmp(choice,? 1)=0)举止usafun(sClient )继续;以下else if(strncmp(choice, quit ,4)=0|strncmp(choice, quit ,2)=0)举止break;以下扫描( % s ,选择2 );if (strncmp ( get ,3)=0|strncmp ( get ,3 )=0)举止getcfun(sclelint,choice2)继续;以下else if (语音, put ,3 )=0| |语音, put ,3)=0举止putfun(sclelint,choice2)继续;以下else if (语音, CD ,2)=0语音, CD ,2)=0举止cdfun(sclelint,

温馨提示

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

评论

0/150

提交评论