ftp客户端程序

来源:互联网 发布:wine怎么安装软件 编辑:程序博客网 时间:2024/03/29 09:42


#include<stdio.h>
#include <stdlib.h>
#include<winsock2.h>
#include<string.h>
#include<conio.h>
#pragma  comment(lib,"ws2_32.lib")

FILE *fp;
SOCKET client,upload;
WSADATA WSAData;
int WSAreturn;
int portnum;
char *sportnum;
struct hostent *hp;
char information[256];
char receive[256];
char username[32],password[32],cmd[128];
char servername[256];
char message[10000];
long result;

int xferData();


int RecvMessage(SOCKET *s)
{
recv(*s,message,sizeof(message),0);

printf("*******接收到的消息*******/n");
printf("%s/n",message);
return(0);
}

int connection(SOCKET *s,char* name,int port)
{
sockaddr_in to;


WSAreturn = WSAStartup(0x101,&WSAData);
if(WSAreturn)
{
printf("发生一个未知错误!/n");
return 0;
}

*s = socket(PF_INET,SOCK_STREAM,0);
to.sin_family = AF_INET;

 to.sin_addr.s_addr = inet_addr(name);
//if(hp = gethostbyname(name))
//{
//memcpy((char*)&to.sin_addr,hp->h_addr,hp->h_length);
//}
//else
//{
//printf("host unknown!");
//return(-1);
//}
to.sin_port = htons(port);

printf("正在连接.../n");
result = connect(*s,(struct sockaddr *)&to,sizeof(to));
if(SOCKET_ERROR==result)

// 连接失败 
printf("对不起,无法连接到目标主机!/n");
WSACleanup(); 
return -1; 
}

else
{
recv(*s,receive,sizeof(receive),0);
printf("*******欢迎消息消息*******/n");
printf("%s/n",receive);
printf("***********结束*********/n");
}

return (0);
}

int xferData()
{
char *temp1, *temp2;
strcpy(username,"sybase");
strcpy(cmd,"USER ");
strcat(cmd,username);
strcat(cmd,"/r/n");
send(client,cmd,strlen(cmd),0);
RecvMessage(&client);

strcpy(password,"123456");
strcpy(cmd,"PASS ");
strcat(cmd,password);
strcat(cmd,"/r/n");
send(client,cmd,strlen(cmd),0);
RecvMessage(&client);


strcpy(cmd,"PASV/r/n");
send(client,cmd,strlen(cmd),0);
recv(client,message,sizeof(message),0);
printf("* %s",message);
sportnum = strchr(message,',');
sportnum = strchr((sportnum+1),',');
sportnum = strchr((sportnum+1),',');
sportnum = strchr((sportnum+1),',') + 1;
temp1 = strchr(sportnum,')');
temp1[0] = '/0';
temp1 = strchr(sportnum,',');
temp2 = temp1 + 1;
temp1[0] = '/0';
portnum = atoi(sportnum)*256 + atoi(temp2);

printf("* %s %s %d*/n",sportnum,temp2,portnum);

connection(&upload,servername,portnum);          //第二个socket连接一连就卡死了

strcpy(cmd,"LIST/r/n");
send(client,cmd,strlen(cmd),0);
RecvMessage(&client);
//strcpy(cmd,"STOR ");
//strcat(cmd," c://2.txt/r/n");
//printf("%s/n",cmd);
//send(client,cmd,strlen(cmd),0);
//RecvMessage();


closesocket(client);
closesocket(upload);
WSACleanup();
return(0);
}


void main()
{
//printf("请输入要登陆的IP:");
//scanf("%s",&servername);
strcpy(servername,"192.168.9.28");
//connection1();
if(!connection(&client,servername,21))
xferData();

getch();
}

原创粉丝点击