linux文件管理系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆大学课程设计实验报告
重庆大学课程设计报告
课程设计题目:Linux下基于socket的文件传输程
序设计
学院:计算机学院
专业班级:网络工程一班
年级:2009 级
姓名:朱俊逸左元礼李祖易
学号:20095547 20095548 20095531 完成时间:2012 年 6 月21 日成绩:
指导教师:
重庆大学教务处制
课程设计指导教师评定成绩表
指导教师评定成绩:
指导教师签名:年月日
重庆大学本科学生课程设计任务书
目录
摘要 (1)
第一章课程设计要求 (2)
第二章设计概要 (3)
2.1 功能设计 (3)
2.2 程序系统功能模块 (3)
2.3 功能分析 (4)
2.3.1 功能流程图 (4)
2.3.2 系统操作界面 (5)
2.3.3 程序主要功能说明 (6)
第三章调试分析与测试结果 (13)
3.1服务器端 (13)
3.1.1 服务器端初始状态 (13)
3.1.2 对服务器端进行文件管理 (14)
3.1.3 拷贝 (14)
3.1.4列出服务器端文件列表 (15)
3.1.5删除文件 (16)
3.1.6创建文件 (17)
3.1.7重命名文件 (17)
3.1.8移动文件 (18)
3.1.9退出文件管理并监听客户端 (19)
3.2客户端 (20)
3.2.1查看客户端文件列表 (20)
3.2.2查看服务器端文件列表 (20)
3.2.3从服务器端下载文件到客户端 (21)
3.2.4从客户端上传文件到服务器端 (21)
3.2.5更改文件目录 (22)
第四章设计总结 (23)
第五章参考文献 (24)
摘要
网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
关键字: Socket、文件传输、多线程
第一章课程设计要求
题目名称:Linux下基于socket的文件传输程序设计
题目类型:设计型
课程设计目的:实现文件的上传、下载和管理,了解socket编程知识已知参数和设计要求:
系统分为客户端和服务器端,客服端可以实现文件的上传、下载以及查看服务器下默认目录的文件列表;服务器端可以对文件进行管理,包括上传,下载,删除文件,重命名等;
实验内容:
1、编程实现上述功能。
2、在内核中添加一个自己的内存分配和释放的系统调用(可以调用
malloc()和free()等内存管理函数实现),并在程序中调用;
3、支持多个客户端同时对服务器中的文件进行操作(多线程);
第二章设计概要
2.1 功能设计
本项目是为了实现在Linux下基于Socket进行文件传输的功能。项目的分析及设计要求如下:
1)整个系统中分为服务器端(Server)和客户端(Client)
2)服务器端可以对文件进行管理,包括上传,下载,删除文件,重命名等
3)客服端可以实现文件的上传、下载以及查看服务器下默认目录的文件列表4)在程序中应用多线程来实现多个客户端同时对一个服务器端进行请求操作2.2 程序系统功能模块
图2.1
2.3 功能分析
2.3.1 功能流程图:
图2.2
2.3.2 系统操作界面Server:
Client:
2.3.3 程序主要功能说明
主要功能实现代码如下:
1.服务器端
A.多线程的实现:
if(fork()==0){ //fork()实现多线程 while(1){
if((read_size=recv(connfd, buf, N, 0))==-1)
{
//perror("recv error.");
exit(1);
}
if(!strcmp(buf, "end"))
{
break;
}
switch (buf[0])
{
case 'L' :
ProcessList(connfd);
printf("打印list!\n");
break;
case 'G' :