FTP客户端是自己做的的第一个C项目,大二暑假做的。现在拿出来看看,当时只是初学者,暑假在学校一个人做了1个多星期。当代码成功运行时,瞬间感到C的强大与编程的乐趣。不懂的朋友可以问我。
connect.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];
int control_sock,n;
int main(int argc,char *argv[])
{
/* 初始化socket */
struct sockaddr_in servaddr;
bzero(read_buf,sizeof(read_buf));
bzero(send_buf,sizeof(send_buf));
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_pton(AF_INET,SERV_IP,&servaddr.sin_addr);
servaddr.sin_port = htons(SERV_PORT);
control_sock = socket(AF_INET, SOCK_STREAM, 0);
/* 连接到服务器端 */
connect(control_sock, (struct sockaddr *)&servaddr, sizeof(servaddr));
/* 客户端接收服务器端的一些欢迎信息 */
n=read(control_sock, read_buf, sizeof(read_buf));
if(n<0)
{
perror("read error");
exit(1);
}
printf("From server %s\n",read_buf);
login();
}
#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;
int main(int argc,char *argv[])
{
/* 初始化socket */
struct sockaddr_in servaddr;
bzero(read_buf,sizeof(read_buf));
bzero(send_buf,sizeof(send_buf));
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_pton(AF_INET,SERV_IP,&servaddr.sin_addr);
servaddr.sin_port = htons(SERV_PORT);
control_sock = socket(AF_INET, SOCK_STREAM, 0);
/* 连接到服务器端 */
connect(control_sock, (struct sockaddr *)&servaddr, sizeof(servaddr));
/* 客户端接收服务器端的一些欢迎信息 */
n=read(control_sock, read_buf, sizeof(read_buf));
if(n<0)
{
perror("read error");
exit(1);
}
printf("From server %s\n",read_buf);
login();
}
login.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];
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));