版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆大学课程设计报告课程设计题目: linux下基于socket的文件传输程序设计 学 院: 计算机学院 专业班级: 网络工程一班 年 级: 2009 级 姓 名: 文程 学 号: 20095539 完成时间: 2012 年 6 月 21 日成 绩: 指导教师: 重庆大学教务处制课程设计指导教师评定成绩表项目分值优秀(100x90)良好(90x80)中等(80x70)及格(70x60)不及格(xd_name, .) = 0) | (strcmp(myitem-d_name, .) = 0) continue;strcpy(buf, myitem-d_name);send(connfd, buf
2、, n, 0);closedir(mydir);return;三、下载文件:void processget(int connfd, char buf) /client下载函数,返回client请求的文件int fd, nbyte;if (fd = open(buf+1, o_rdonly) 0)send(connfd, buf, nbyte, 0);close(fd);return;四、上传文件:void processput(int connfd, char buf) /接收client上传的文件int fd, nbyte;if (fd = open(buf+1, o_wronly|o_cr
3、eat|o_trunc, 0666) 0)write(fd, buf, nbyte);close(fd);return;五、文件管理void rm_file( char command) /删除文件 char cmdline256; sprintf(cmdline, rm -f %s,command+3); system(cmdline); printf(已删除%s,command+3); void touch_file( char command) /创建文件 char cmdline256; sprintf(cmdline, touch %s,command+3); system(cmdl
4、ine); printf(已创建%s,command+3); void move_file(char src_file,char des_file) /mv函数的实现 char cmdline256; sprintf(cmdline,mv %s %s ,src_file,des_file); system(cmdline); void copy_file(char src_file,char des_file) /文件拷贝 char cmdline256; sprintf(cmdline,cp %s %s ,src_file,des_file); system(cmdline); 客户端一、打
5、印列表:void processlist(struct sockaddr_in server_addr)int sockfd, nbyte;char bufn;if (sockfd = socket(pf_inet, sock_stream, 0) 0)printf(获取失败n);return;if (connect(sockfd, (sa *)&server_addr, sizeof(server_addr) 0)printf(连接server失败n);goto error_1;strcpy(buf, l);send(sockfd, buf, n, 0);printf(server目录下文件
6、列表:n);while (nbyte = recv(sockfd, buf, n, 0) != 0)printf(%sn, buf);error_1:close(sockfd);return;二、下载文件:void processget(struct sockaddr_in server_addr, char command)int sockfd, nbyte, fd;char bufn;if (sockfd = socket(pf_inet, sock_stream, 0) 0)printf(下载失败n);return;if (connect(sockfd, (sa *)&server_ad
7、dr, sizeof(server_addr) 0)printf(连接server失败n);goto error_2;sprintf(buf, g%s, command+4);send(sockfd, buf, n, 0);recv(sockfd, buf, n, 0);if (buf0 = n) / no such fileprintf( server上不存在此文件!n);goto error_2;if (fd = open(command+4, o_wronly|o_creat|o_trunc, 0666) 0)write(fd, buf, nbyte);printf(下载文件成功n);c
8、lose(fd);error_2:close(sockfd);return;三、上传文件:void processput(struct sockaddr_in server_addr, char command)int sockfd, fd, nbyte;char bufn;if (sockfd = socket(pf_inet, sock_stream, 0) 0)printf(上传失败n);return;if (connect(sockfd, (sa *)&server_addr, sizeof(server_addr) 0)printf(连接server失败n);goto error_3
9、;if (fd = open(command+4, o_rdonly) 0)send(sockfd, buf, nbyte, 0);printf(上传文件成功n);close(fd);error_3:close(sockfd);return;以上为基本功能,下面是加分项内容:1、 改变工作路径:void move_file(char src_file,char des_file) char cmdline256; sprintf(cmdline,mv %s %s ,src_file,des_file); system(cmdline);2、 用户权限管理:include#include#inc
10、lude sys/types.h#includeint main(int argc,char *argv)int mode; int mode_u;int mode_g;int mode_o;char *path;if(argc3)printf(%s n,argv0);/ exit(0);mode=atoi(argv1);if(mode777 |mode0)printf(mode num error!n);mode_u=mode /100;mode_g=(mode-(mode_u*100)/10;mode_o=mode-(mode_u*100)-(mode_g*10);mode=(mode_u
11、*8*8)+(mode_g*8)+mode_o;path =argv2;if(chmod(path,mode)=-1)perror(chmod error);return 0;请输入如mv a b 形式的命令第3章 调试分析与测试结果3.1服务器端3.1.1 服务器端初始状态:3.1.2 对服务器端进行文件管理:3.1.3 拷贝:执行结果:将文件new.doc拷贝生成文件copy.doc3.1.4列出服务器端文件列表: 3.1.5删除文件:删除后目录下的状态:3.1.6重命名文件:将文件linux.doc重命名为new.doc:再查看文件列表:由上图发现,linux.doc已被重命名为new.
12、doc。3.1.7移动文件:运行成功后,查看目标目录,发现new.doc已经成功移动到/home目录。3.2客户端3.2.1从服务器端下载文件到客户端:下载成功之后,查看客户端文件目录,发现down.txt出现在客户端文件目录中。3.2.2从客户端上传文件到服务器端:上传成功之后,查看客户端文件目录,发现up.txt出现在服务器端文件目录中。3.2.3更改文件目录:查看客户端文件列表,发现其已不在列表中,再查看移动的目标目录:发现文件已在相应文件夹中。4、用户权限管理如下图所示,通过./power 200 1命令使得文件权限由-rw-rw-r成功变为w-,由此实现了用户权限的管理:第4章 设计
13、总结本学期最感兴趣的就是linux这门课了,对于已经习惯使用windows系统的我们而言,linux独特的系统内核结构和工作机制让我们大开眼界,虽然在实用性上稍逊windows等操作系统,但是在linux“开源”的旗帜下,我们才可以真正意义上接触到系统的底层。本次课程设计,要求通过socket编程实现文件的上传、下载、管理以及其他不同的文件操作。在这之前,我们已经有过使用其他高级语言进行socket编程的经验,我们知道,网络的socket数据传输是一种特殊的i/o,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描
14、述符,随后的连接建立、数据传输等操作都是通过该socket实现的。socket接口设计者最先是将接口放在linux操作系统里面的。如果了解linux系统的输入和输出的话,就很容易了解socket了。网络的 socket数据传输是一种特殊的i/o,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返 回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。在深入了解了socket 这块难啃的骨头的核心思想之后。我们在对设计功能进行编程实现的时候,还是遇到了不少技术上的问题,特别是文件权限的设置是让人比较头疼的事情,通过其他小组同学的帮助以及自己的钻研,配合小组成员大家共同的努力,终于攻克了不少思路上和技术上的困难。对于linux系统操作以及其网络通讯功能的实现、工作原理的认识都更为深刻。小组成员分工明确,团结一致,配合高效,真正做到了把理论同实践相结合,真正实现了友情在奋斗中的升华,让人感动,这不是一个人的课程设计,这是大家的课程设计!通过本次课程设计的经历,将持续激发我们自主学习linux的热情,我们将本着“知识改变命运”的指导思想,贯彻落实小组长提出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校耗材采购制度
- 采购订单专用章制度
- 行政单位全面采购制度
- 如何加强政府采购制度
- 国企采购廉洁制度汇编
- 采购核算员绩效考核制度
- 园林工程采购制度
- 采购管理规章考核制度
- 学校政府采购工作制度
- 采购部门合规管理制度
- 2026福建浦开集团有限公司、福建浦盛产业发展集团有限公司、福建浦丰乡村发展集团有限公司社会公开招聘补充笔试模拟试题及答案解析
- 桥牌协会内部管理制度
- 2026重庆市南岸区消防救援支队消防文员招录2人笔试备考试题及答案解析
- 2026年山东省立第三医院初级岗位公开招聘人员(27人)笔试备考试题及答案解析
- 2026年滁州天长市大通镇预任制村干及村级后备干部储备库选拔28名笔试备考试题及答案解析
- 2026秋招:广州环投集团笔试题及答案
- 【新教材】人教PEP版(2024)四年级下册英语全册教案(含教学计划)
- 加油站突发环境事件风险评估报告模板
- 挤塑工艺培训课件
- 生成式AI赋能下的高中地理教师教育观念更新与教学实践研究教学研究课题报告
- 2025执业药师继续教育试题库及参考答案(完整版)
评论
0/150
提交评论