使用 Socket 通信实现 FTP 客户端程序

2015-01-18 09:59:35|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, 网络通信|来源:唯设编程网

客户端和 FTP 服务器建立 Socket 连接

当客户端与服务器建立连接后,服务器会返回 220 的响应码和一些欢迎信息。

1. 客户端连接到服务器端

图 1. 客户端连接到服务器端

清单 1. 客户端连接到 FTP 服务器,接收欢迎信息

SOCKET control_sock;

struct hostent *hp;

struct sockaddr_in server;

memset(&server, 0, sizeof(struct sockaddr_in));



/* 初始化socket */

control_sock = socket(AF_INET, SOCK_STREAM, 0);

hp = gethostbyname(server_name);

memcpy(&server.sin_addr, hp->h_addr, hp->h_length);

server.sin_family = AF_INET;

server.sin_port = htons(port);



/* 连接到服务器端 */

connect(control_sock,(struct sockaddr *)&server, sizeof(server));

/* 客户端接收服务器端的一些欢迎信息 */

read(control_sock, read_buf, read_len);

客户端登录 FTP 服务器

当客户端发送用户名和密码,服务器验证通过后,会返回 230 的响应码。然后客户端就可以向服务器端发送命令了。

2. 客户端登录 FTP 服务器

客户端登录 FTP 服务器

清单 2. 客户端发送用户名和密码,登入 FTP 服务器

/* 命令 ”USER username
” */

sprintf(send_buf,"USER %s
",username);

/*客户端发送用户名到服务器端 */

write(control_sock, send_buf, strlen(send_buf));

/* 客户端接收服务器的响应码和信息,正常为 ”331 User name okay, need password.” */

read(control_sock, read_buf, read_len);



/* 命令 ”PASS password
” */

sprintf(send_buf,"PASS %s
",password);

/* 客户端发送密码到服务器端 */

write(control_sock, send_buf, strlen(send_buf));

/* 客户端接收服务器的响应码和信息,正常为 ”230 User logged in, proceed.” */

read(control_sock, read_buf, read_len);
发表评论0条 】
网友评论(共?条评论)..
使用 Socket 通信实现 FTP 客户端程序