2015-01-18 09:59:35|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 网络通信|来源:唯设编程网
清单 4. 客户端连接到 FTP 服务器的数据端口并下载文件
/* 连接服务器新开的数据端口 */ connect(data_sock,(struct sockaddr *)&server, sizeof(server)); /* 命令 ”CWD dirname ” */ sprintf(send_buf,"CWD %s ", dirname); /* 客户端发送命令改变工作目录 */ write(control_sock, send_buf, strlen(send_buf)); /* 客户端接收服务器的响应码和信息,正常为 ”250 Command okay.” */ read(control_sock, read_buf, read_len); /* 命令 ”SIZE filename ” */ sprintf(send_buf,"SIZE %s ",filename); /* 客户端发送命令从服务器端得到下载文件的大小 */ write(control_sock, send_buf, strlen(send_buf)); /* 客户端接收服务器的响应码和信息,正常为 ”213 <size>” */ read(control_sock, read_buf, read_len); /* 命令 ”RETR filename ” */ sprintf(send_buf,"RETR %s ",filename); /* 客户端发送命令从服务器端下载文件 */ write(control_sock, send_buf, strlen(send_buf)); /* 客户端接收服务器的响应码和信息,正常为 ”150 Opening data connection.” */ read(control_sock, read_buf, read_len); /* 客户端创建文件 */ file_handle = open(disk_name, CRFLAGS, RWXALL); for( ; ; ) { ... ... /* 客户端通过数据连接 从服务器接收文件内容 */ read(data_sock, read_buf, read_len); /* 客户端写文件 */ write(file_handle, read_buf, read_len); ... ... } /* 客户端关闭文件 */ rc = close(file_handle);