#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
int main(int argc,char *argv[])
{
char *passwd[4]={"212","das","123.com","dasdasf"};
int fd;
char buff[1024];
struct sockaddr_in seraddr;
char anmous[256] = "USER anonymous\r\n";
int ret;
struct timeval val;
fd = socket(AF_INET,SOCK_STREAM,0);
if(fd <=0 )
{
printf("*******************socket error\n");
return -1;
}
memset(&seraddr,0,sizeof(seraddr));
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(21);
seraddr.sin_addr.s_addr = inet_addr("192.168.11.17");
memset(&val,0,sizeof(val));
val.tv_sec = 5;
setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,(void*)&val, sizeof(val));
if(connect(fd,(struct sockaddr*)&seraddr,sizeof(struct sockaddr_in)) != 0)
{
printf("connect error\n");
goto out;
}
memset(buff,0,1024);
recv(fd,buff,1024,0);
//show vsftpd version
printf("%s\n", buff);
//發送匿名賬戶登錄
sprintf(anmous,"%s","USER anonymous\r\n");
send(fd,anmous,strlen(anmous),0);
memset(buff,0,1024);
recv(fd,buff,1024,0);
printf("%s\n",buff);
//331表示用戶名傳輸完成 要求輸入密碼
if(331 == atoi(buff))
{
//發送任意密碼
sprintf(anmous,"%s","PASS hellowold\r\n");
send(fd,anmous,strlen(anmous),0);
memset(buff,0,1024);
ret = recv(fd,buff,1024,0);
if(ret <= 0)
{
printf("Not support anonymous\n");
goto out;
}
printf("%s\n",buff);//發返回登錄成功
//結束此次登錄
sprintf(anmous,"%s","QUIT\r\n");
send(fd,anmous,strlen(anmous),0);
memset(buff,0,1024);
recv(fd,buff,1024,0);
printf("%s\n",buff);
}
out:
close(fd);
return 0;
}