当前位置:  技术问答>linux和unix

求高手简答,ftp客户端问题,程序贴在这里。

    来源: 互联网  发布时间:2016-09-16

    本文导语:  /*  * =====================================================================================  *  *       Filename:  ftpclient.c  *  *    Description:  ftpclient  *  *        Version:  1.0  *        Created:  2010年08月04日 08时40分15秒...

/*
 * =====================================================================================
 *
 *       Filename:  ftpclient.c
 *
 *    Description:  ftpclient
 *
 *        Version:  1.0
 *        Created:  2010年08月04日 08时40分15秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Yang Shao Kun (), cdutyangshaokun@163.com
 *        Company:  College of Information Engineering of CDUT
 *
 * =====================================================================================
 */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERV_PORT 21
#define MAXSIZE 1024
#define SA struct sockaddr
void login();
void zeromery(char *arry,int len);
typedef struct hoststruct
{
unsigned int hostip;
int npsupport;
struct hoststruct *next;
}host1;
void main(int argc,char **argv)
{
printf("ftp>");
char command[MAXSIZE];
char*cmd;
scanf("%s",command);
cmd=command;
while(*(cmd)==' ')
cmd++;
if(strncmp(cmd,"login",5)==0)
{
login();
}
/*else if (strncmp(cmd,"quit",4)==0)
{
printf("bye^_^");
exit(1);
}*/

}
void login()
{
//初始化端口信息
int sockfd;
struct sockaddr_in serv_addr;
char senddate,recvdate;
char sendline[MAXSIZE],recvline[MAXSIZE];
struct hostent *host;
char name[1024],password[1024];

//获取hostent中相关参数
printf("please enter the hostnamen");
printf("ftp-> ");
scanf("%s",name);
host=gethostbyname(name);
if(host==NULL)
{
printf("get host by name is error");
exit(1);
}

//创建socket
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfdh_addr,addr,1024));
recvdate=recv(sockfd,recvline,sizeof(recvline),0);
if(recvdate==-1)
{
printf("recvdate is connect errorn");
exit(1);
}
else if(strncmp(recvline,"220",3)==0)
{
printf("connect success,pelase enter usernamen");
}
else 
{
printf("220 connect is error!");
exit(1);
}

//ftp用户登录主体部分
int sendbytes,recvbytes;
zeromery(name,1024);
zeromery(password,1024);
zeromery(recvline,1024);
zeromery(sendline,1024);
printf("ftp-> ");
scanf("%s",name);//可以支持匿名登录vsftpd
strcat(sendline,"USER ");
strcat(sendline,name);
strcat(sendline,"rn");
printf("--->%sn",sendline);
sendbytes=send(sockfd,sendline,sizeof(sendline),0);
if(sendbytes==-1)
{
printf("send is wrongn");
exit(1);
}
recvbytes=recv(sockfd,recvline,sizeof(recvline),0);
if(strncmp(recvline,"331",3)==0)
{
printf("331 please specify the password.n");
}
else
{
printf("recv date is error.n");
exit(1);
}
zeromery(sendline,1024);
zeromery(recvline,1024);
printf("ftp-> ");
scanf("%s",password);
strcat(sendline,"PASS ");
strcat(sendline,password);
strcat(sendline,"rn");
printf("--->%sn",sendline);
sendbytes=send(sockfd,sendline,sizeof(sendline),0);
if(sendbytes==-1)
{
printf("pass send is errorn");
exit(1);
}
recvbytes=recv(sockfd,recvline,sizeof(recvline),0);
if(strncmp(recvline,"230",3)==0)
{
printf("login success!wait for command...n");
}
else 
{
printf("pass recv is errorn");
printf("%d",recvbytes);
exit(1);
}


//支持断点续传
int npsupport;
zeromery(sendline,1024);
zeromery(recvline,1024);
strcat(sendline,"REST ");
strcat(sendline,"100");
strcat(sendline,"rn");
printf("--->%sn",sendline);
sendbytes=send(sockfd,sendline,sizeof(sendline),0);
if(sendbytes==-1)
{
printf("rest send is error!n");
exit(1);
}
recvbytes=recv(sockfd,recvline,sizeof(recvline),0);
if(strstr(recvline,"350 restarting at 100")!=0)
{
npsupport=1;
printf("support 断点续传n");
}
if(recvbytes==-1)
{
printf("rest recv date is error.n");
exit(1);
}
else
{
npsupport=0;
printf("not support 断点续传n");
}


//获取服务器版本信息
zeromery(recvline,1024);
zeromery(sendline,1024);
strcat(sendline,"SYST");
strcat(sendline,"rn");
printf("--->%sn",sendline);
sendbytes=send(sockfd,sendline,sizeof(1024),0);
if(sendbytes==-1)
{
printf("syst send is errorn");
exit(1);
}
recvbytes=recv(sockfd,recvline,sizeof(recvline),0);
if(strncmp(recvline,"215",3)==0)
{
printf("%s",recvline);
}
if(recvbytes==-1)
{
printf("syst recv is errorn");
exit(1);
}
else 
{
printf("syst recv connectin is errorn");
exit(1);
}
}
void zeromery(char *arry,int len)
{
int i;
len=sizeof(arry);
for(i=0;i

    
 
 

您可能感兴趣的文章:

  • 请问诸位高手:如何在服务器上得到正在连接的客户端IP??
  • 客户端JavaScipt对servlet的调用问题。各位高手请进!!!
  • 请问关于socket客户端因事件启动新线程的问题.高手请进
  • 注意了!!100分求购java Telnet客户端代码!!!高手指点同样给分!!
  • 在AIX上安装了MAGIC++,客户端调试时报/bin/sh:gdb not found,请高手指教
  • 请问高手,我在java applet中有 密钥 ,如何不给客户端用反编译或其他方法知道我的密钥??
  • 请问各位高手,rmi和ejb有什么关系。开发客户端为javaapplet的多层结构系统怎样用到他们???
  • linux 验证客户端登录 socket得不到数据!! 急求高手帮忙!!!
  • EJB客户端事物处理的问题(高手熟手一定来看看)
  • 为什么SOCKET编程时遇到这么奇怪的问题, acceptt接受客户端时总是返回-1,请高手指教,急!!!!!!!!!!!!!!
  • jsp下载文件时文件名到客户端时乱码?就是保存的时候,望高手指点!
  • 高手帮我写一段简单的Socket客户端代码 100分
  • 多客户端Socket的select问题,高手帮忙!
  • 一个简单的服务器 客户端代码 请高手看下 在线等
  • 怎样固定JTabel中的列(column),而不让客户移动?高手快来!!!
  • 如何在服务端控制客户连接,请高手指点!
  • 请问高手,有没有办法可以控制文件的下载?下载文件,一般通过地址链直接链接过去就可以下载,但有些文件是要某种条件下才可以让客户下载,如
  • 我正在作一个简单的telnet客户端的程序,我的DataInputStream的in.readLine()不对?十万火急!!请高手点拨!!!!另外,为什么我只能给29分,本来我给的100分的!?
  • 一个简单的SOCKET程序, 可服务端不能读客户端的数据,请高手指点!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • [100分]如何在GTK下编写的程序中调用shell下的批处理程序[高手进]
  • 我想写一个显示“HELLO,WORLD”的程序,请高手给出用JB7写这个程序的具体步骤。
  • 高分相求,有哪位高手能给我这个shell程序的源程序?
  • 我用telnet登陆到linux下运行了一个java程序,在关闭了telnet后怎么能让这个java程序继续执行,请高手指点一下
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 请教高手,如何在java中调用其他应用程序(该程序主要进行数据库操作)
  • jtree程序查错,150分有请高手
  • 在sendmail里调用其他处理邮件程序的问题,高手进来!
  • 请问高手,如何在X windows中运行自己写的程序?
  • 高手指教:怎样在LINUX下运行WIN98程序?
  • 如何使用kdevelop创建动态共享库程序,请高手指点
  • 请教高手关于c程序core问题
  • 哪位高手能给个创建消息队列的程序
  • 高手请进:solaris下启动程序报错
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • 非常刺手的问题,请高手QQ或MSN联系,我把程序传给你,帮我调试一下.
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 想认识几个编程序的高手~~
  • 请高手指点,多线程程序,如何调试找出 SIGSGEV 发生的位置?
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3