{
perror("read error");
exit(1);
}
printf("From server %s\n",send_buf);
}
mode();
}
#include
#include
#include
#include
#include
#include
#include
#define SERV_IP "127.0.0.1"
#define SERV_PORT 21
char read_buf[1024];
char send_buf[1024];
int control_sock,n;
void login()
{
/* 命令 ”USER username\r\n” */
strcpy(send_buf,"USER sunmeng\r\n");
/*客户端发送用户名到服务器端 */
n=write(control_sock,send_buf,strlen(send_buf));
if(n<0)
{
perror("write username error");
exit(1);
}
/* 客户端接收服务器的响应码和信息,正常为 ”331 User name okay, need password.” */
bzero(send_buf,sizeof(send_buf));
n=read(control_sock,send_buf,sizeof(send_buf));
if(n<0)
{
perror("read error");
exit(1);
}
printf("From server %s\n",send_buf);
bzero(read_buf,sizeof(read_buf));
strncpy(read_buf,send_buf,3);
// printf("%s",read_buf);
if(strcmp(read_buf,"331")==0)
{
/* 命令 ”PASS password\r\n” */
bzero(read_buf,sizeof(read_buf));
bzero(send_buf,sizeof(send_buf));
strcpy(send_buf,"PASS smeng1114\r\n");
/* 客户端发送密码到服务器端 */
n=write(control_sock,send_buf,strlen(send_buf));
//printf("%d",strlen(send_buf));
if(n<0)
{
perror("write username error");
exit(1);
}
/* 客户端接收服务器的响应码和信息,正常为 ”230 User logged in, proceed.” */
bzero(send_buf,sizeof(send_buf));
n=read(control_sock,send_buf,sizeof(send_buf));
if(n<0)
{
perror("read error");
exit(1);
}
printf("From server %s\n",send_buf);
}
mode();
}
mode.c
[cpp]
#include
#include
#include
#include
#include
#include
#include
#define SERV_IP "127.0.0.1"
#define SERV_PORT 21
char read_buf[1024];
char send_buf[1024];
char *p,*s;
int control_sock,data_sock,n,p1,p2;
void mode()
{
/* 命令 ”PASV\r\n” */
bzero(send_buf,sizeof(send_buf));
strcpy(send_buf,"PASV\r\n");
/* 客户端告诉服务器用被动模式 */
n=write(control_sock,send_buf,strlen(send_buf));
//printf("%s\n",send_buf);
if(n<0)
{
perror("write mode error");
exit(1);
}
/*客户端接收服务器的响应码和新开的端口号,
* 正常为 ”227 Entering passive mode ()” */
n=read(control_sock, read_buf, sizeof(read_buf));
if(n<0)
{
perror("read mode error");
exit(1);
}
printf("From server %s\n",read_buf);
p=strtok(read_buf,",");
//printf("%s\n",p);
p=strtok(NULL,",");
p=strtok(NULL,",");
p=strtok(NULL,",");
p=strtok(NULL,",");
//printf("%s\n",p);
s=strtok(NULL,")");
//printf("%s\n",s);
/*字符串转换成整数*/
p1=atoi(p);
p2=atoi(s);
data_sock=p1*256+p2;
//printf("%d\n",data_sock);
down();
}
#include
#include
#include
#include
#include
#include
#include
#define SERV_IP "127.0.0.1"
#define SERV_PORT 21
char read_buf[1024];
char send_buf[1024];
char *p,*s;
int control_sock,data_sock,n,p1,p2;
void mode()
{
/* 命令 ”PASV\r\n” */
bzero(send_buf,sizeof(send_buf));
strcpy(send_buf,"PASV\r\n");
/* 客户端告诉服务器用被动模式 */
n=write(control_sock,send_buf,strlen(send_buf));
//printf("%s\n",send_buf);
if(n<0)
{
perror("write mode error");
exit(1);
}
/*客户端接收服务器的响应码和新开的端口号,
* 正常为 ”227 Entering passive mode (