Linux课程设计报告.doc

上传人:文库蛋蛋多 文档编号:2388096 上传时间:2023-02-17 格式:DOC 页数:27 大小:979.50KB
返回 下载 相关 举报
Linux课程设计报告.doc_第1页
第1页 / 共27页
Linux课程设计报告.doc_第2页
第2页 / 共27页
Linux课程设计报告.doc_第3页
第3页 / 共27页
Linux课程设计报告.doc_第4页
第4页 / 共27页
Linux课程设计报告.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Linux课程设计报告.doc》由会员分享,可在线阅读,更多相关《Linux课程设计报告.doc(27页珍藏版)》请在三一办公上搜索。

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.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-,由此实现了用户权限的管理:第四章 设计

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 这块难啃的骨头的核心思想之后。我们在对设计功能进行编程实现的时候,还是遇到了不少技术上的问题,特别是文件权限的设置是让人比较头疼的

15、事情,通过其他小组同学的帮助以及自己的钻研,配合小组成员大家共同的努力,终于攻克了不少思路上和技术上的困难。对于Linux系统操作以及其网络通讯功能的实现、工作原理的认识都更为深刻。小组成员分工明确,团结一致,配合高效,真正做到了把理论同实践相结合,真正实现了友情在奋斗中的升华,让人感动,这不是一个人的课程设计,这是大家的课程设计!通过本次课程设计的经历,将持续激发我们自主学习Linux的热情,我们将本着“知识改变命运”的指导思想,贯彻落实小组长提出的“一定要攻克难关、一定要坚持到底、一定要自主创新、一定要团结一致”的“四个一”先进方针,为中华民族特色社会主义的崛起,抛头颅、洒热血,前进、前进、前进!第五章 参考文献1.深入理解Linux内核 陈莉君等译 中国电力出版社 2001.102. Linux内核设计与实现 陈莉君等译 机械工业出版社 2003.113. Linux内核源代码情景分析 毛德操,胡希明 浙江大学出版社 2001.94.TCP/IP网络原理与技术 周明天、汪文勇 清华大学出版社:1993

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号