#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();
}