当前位置: 技术问答>linux和unix
写的linux下ftp登陆程序,有问题
来源: 互联网 发布时间:2016-04-24
本文导语: #include #include #include #include #include #include #include #include #include int main(int argc,char **argv) { struct sockaddr_in ftpsite; //ftp地址 int fd; //socket描述符 struct hostent* ftpinfo; char revbuf[8192]; char sendbuf[1024...
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc,char **argv)
{
struct sockaddr_in ftpsite; //ftp地址
int fd; //socket描述符
struct hostent* ftpinfo;
char revbuf[8192];
char sendbuf[1024];
char temp[1024];
int i;
memset(revbuf,0,8192);
memset(sendbuf,0,1024);
fd=socket(AF_INET,SOCK_STREAM,0);
if (fd==-1)
printf("socket errorn");
memset(&ftpsite,0,sizeof(ftpsite));
ftpinfo=gethostbyname(argv[1]);
memcpy(&ftpsite.sin_addr,ftpinfo->h_addr_list[0],ftpinfo->h_length);
ftpsite.sin_family=AF_INET;
ftpsite.sin_port=htons(atoi(argv[2]));
connect(fd,(struct sockaddr*)&ftpsite,sizeof(ftpsite));
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
memset(revbuf,0,8192);
strcpy(sendbuf,"USER anonymousrn");
send(fd,sendbuf,1024,0);
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
memset(sendbuf,0,1024);
strcpy(sendbuf,"PASS anonymousrn");
send(fd,sendbuf,1024,0);
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
close(fd);
return 0;
}
[root@localhost /]# gcc ftp.c -o ftp
[root@localhost /]# ./ftp rtfm.mit.edu 21
220 (vsFTPd 1.2.2)
331 Please specify the password.
530 Please login with USER and PASS.
这是为什么,已经提供了用户和密码了啊
这个ftp是匿名登陆的
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc,char **argv)
{
struct sockaddr_in ftpsite; //ftp地址
int fd; //socket描述符
struct hostent* ftpinfo;
char revbuf[8192];
char sendbuf[1024];
char temp[1024];
int i;
memset(revbuf,0,8192);
memset(sendbuf,0,1024);
fd=socket(AF_INET,SOCK_STREAM,0);
if (fd==-1)
printf("socket errorn");
memset(&ftpsite,0,sizeof(ftpsite));
ftpinfo=gethostbyname(argv[1]);
memcpy(&ftpsite.sin_addr,ftpinfo->h_addr_list[0],ftpinfo->h_length);
ftpsite.sin_family=AF_INET;
ftpsite.sin_port=htons(atoi(argv[2]));
connect(fd,(struct sockaddr*)&ftpsite,sizeof(ftpsite));
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
memset(revbuf,0,8192);
strcpy(sendbuf,"USER anonymousrn");
send(fd,sendbuf,1024,0);
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
memset(sendbuf,0,1024);
strcpy(sendbuf,"PASS anonymousrn");
send(fd,sendbuf,1024,0);
recv(fd,revbuf,8192,0);
printf("%s",revbuf);
close(fd);
return 0;
}
[root@localhost /]# gcc ftp.c -o ftp
[root@localhost /]# ./ftp rtfm.mit.edu 21
220 (vsFTPd 1.2.2)
331 Please specify the password.
530 Please login with USER and PASS.
这是为什么,已经提供了用户和密码了啊
这个ftp是匿名登陆的
|
输入用户名返回331就是需要密码, 而输入用户名返回530也确实就是登录不成功.
你可以从几个方面试一下:
1 你能肯定这个用户名加密码anonymous可以登录吗? 你用现成的ftp客户端软件试过吗? 一些客户端软件登录的时候都会打出日志,你可以看当使用现成ftp客户端软件的登录步骤是什么, 发过去的用户名跟密码倒底是什么.
2 所有指令加两个rnrn
你可以从几个方面试一下:
1 你能肯定这个用户名加密码anonymous可以登录吗? 你用现成的ftp客户端软件试过吗? 一些客户端软件登录的时候都会打出日志,你可以看当使用现成ftp客户端软件的登录步骤是什么, 发过去的用户名跟密码倒底是什么.
2 所有指令加两个rnrn