电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

linuxcftp实验报告

  • 资源ID:61714592       资源大小:524.15KB        全文页数:23页
  • 资源格式: PDF        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

linuxcftp实验报告

嘉应学院计算机学院 LINUX 系统 综合性实验报告 计算机学院实验报告计算机学院实验报告 课程LINUX 系统 实验名称FTP SERVER int clientfd; uint16_t port; int ret; pid_t pid; struct sockaddr_in server_addr; if ( 2 != argc ) printf(“usage: command listen_portn“); return -1; port = atoi(argv1); 服务器端 客户端 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 5 - server_addr.sin_family =AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(port); sockfd = socket(PF_INET,SOCK_STREAM,0); if (sockfd body_len = ntohl(msg-body_len); msg-command= ntohl(msg-command); /printf(“len = %d, msg = %sn“, msg-body_len, msg-msg_body); 如果服务器出现如果服务器出现 quit 的时候就推出的时候就推出 if ( COMMAND_QUIT = msg-command ) printf(“client closed connection!n“); close(sockfd); return ; 处理下载请求处理下载请求 ret = handle_request(msg, sockfd); if ( SOCK_ERROR = ret ) return; free(msg); 处理客户端的下载处理客户端的下载 int handle_get(msg_head_ctrl_t * msg, int sockfd) 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 9 - int fd; int ret; bool exist; uint32_t body_len; msg_head_ctrl_t *ack_msg; ssize_tread_bytes; ssize_tsent_bytes; 检查所需下载的文件所否存在检查所需下载的文件所否存在 exist = file_exist( msg-msg_body ); printf(“%s , %d“, msg-msg_body, exist); if ( false = exist ) printf(“File %s doesn't exist!n“,msg-msg_body); body_len = msg-body_len; msg-body_len = htonl(msg-body_len); msg-command= htonl(COMMAND_NO_FILE); ret = send(sockfd, msg, sizeof(msg_head_ctrl_t) + body_len, 0); if ( ( sizeof(msg_head_ctrl_t) + body_len ) != ret) printf(“send error,%s:%d“,_FUNCTION_, _LINE_); return SOCK_ERROR; return FAILED; 传送下载数据传送下载数据 while(true) read_bytes = read(fd, ack_msg-msg_body, MAX_READ_BYTES); if ( read_bytes 0 ) /printf(“len %d,%dn“, read_bytes, ack_msg-body_len); 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 10 - ack_msg-body_len = htonl(read_bytes); ack_msg-command= htonl(msg-command); ret = SUCCESSFUL; else if ( -1 = read_bytes ) read_bytes = 0; ack_msg-body_len = 0; ack_msg-command= htonl(COMMAND_ERROR_FILE); ret = FAILED; else if ( 0 = read_bytes )/传送完退出 ack_msg-body_len = 0; ack_msg-command= htonl(COMMAND_END_FILE); ret = SUCCESSFUL; sent_bytes = send( sockfd, ack_msg, read_bytes + sizeof(msg_head_ctrl_t), 0); if ( sent_bytes != (read_bytes + sizeof(msg_head_ctrl_t) ret = SOCK_ERROR; printf(“send data error!%s:%d“,_FUNCTION_, _LINE_); break; if ( 0 = ack_msg-body_len ) break; close(fd); return ret; 处理显示服务端目录内容和打印服务端路径处理显示服务端目录内容和打印服务端路径 int handle_ls_pwd(msg_head_ctrl_t * msg, int sockfd) 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 11 - FILE *file; msg_head_ctrl_t *ack_msg; size_t read_bytes; size_t ret; printf(“%sn“, msg-msg_body); file = popen( msg-msg_body, “r“); if ( NULL = file ) printf(“execute command failed! %sn“, msg-msg_body); return FAILED; ack_msg = malloc(sizeof(msg_head_ctrl_t) + MAX_READ_BYTES); if ( NULL = ack_msg ) printf(“out of memory!n“); return FAILED; ack_msg-command = htonl( msg-command ); while(true) read_bytes = fread(ack_msg-msg_body,1, MAX_READ_BYTES, file); if ( ferror(file) break; ack_msg-body_len = htonl(read_bytes); ret = send(sockfd, ack_msg, read_bytes+sizeof(msg_head_ctrl_t), 0); if ( (read_bytes+sizeof(msg_head_ctrl_t) != ret ) printf(“sock error!n“); return SOCK_ERROR; if ( feof(file ) ) printf(“send over!n“); 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 12 - break; pclose(file); 处理服务器的请求处理服务器的请求 int handle_request( msg_head_ctrl_t * msg, int sockfd) char *cmd; int ret; switch(msg-command) case COMMAND_CD:/处理 cd 命令 cmd = trim_all_space( msg-msg_body+2);/skip “cd“ charatcer ret = chdir(cmd); if ( -1 = ret ) printf(“%s, |%s|n“, strerror(errno), cmd); break; case COMMAND_LS: case COMMAND_PWD: ret = handle_ls_pwd(msg, sockfd); break; case COMMAND_GET: ret = handle_get(msg, sockfd); break; case COMMAND_PUT: break; default: ret = FAILED; break; 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 13 - return ret; 4.2.2、实现客户端功能的主要代码编写: 建立套接字建立套接字 sockfd = socket(PF_INET, SOCK_STREAM , 0); if(sockfd body_len = ntohl(msg-body_len); msg-command= ntohl(msg-command); if(COMMAND_LS=msg-command)| (COMMAND_PWD=msg-command) ) printf(“n%sn“,msg-msg_body); 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 15 - else if ( COMMAND_GET = msg-command ) save_file_to_disk(msg-msg_body); free(msg); 把命令传送到服务端把命令传送到服务端 int send_command_to_server( int sockfd, char *user_input, command_type_t type) ssize_t ret; msg_head_ctrl_t *msg; int body_len; int total_len; body_len = strlen(user_input); total_len = body_len + sizeof(msg_head_ctrl_t); msg = malloc(total_len); if ( NULL = msg ) printf(“out of memeory!n“); return FAILED; msg-command = htonl(type); msg-body_len = htonl(body_len); memcpy(msg-msg_body, user_input, body_len); ret = send(sockfd, msg, total_len, 0); if ( ret body_len), MSG_PEEK); if (ret body_len = ntohl(msg-body_len); msg-command= ntohl(msg-command); if ( COMMAND_NO_FILE = msg-command ) printf(“File %s doesn't exist on servern“, user_input); ret = FAILED; goto Exit; 嘉应学院计算机学院 LINUX 系统 综合性实验报告 - 18 - if ( -1 = fd) fd = open(user_input, O_WRONLY|O_CREAT|O_EXCL, 0660); if ( -1 = fd) printf(“create file

注意事项

本文(linuxcftp实验报告)为本站会员(第***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.