ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:355.90KB ,
资源ID:4815268      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4815268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络文件传输及管理系统课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络文件传输及管理系统课程设计报告.docx

1、计算机网络文件传输及管理系统课程设计报告摘要网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容

2、易了解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、文件传输、多线程第1章 课程设计要求一、设计任务1.1.1 课程设计内容文件传输

3、协议的简单设计与实现:学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧,加深对客户/服务器的工作模式的认识。用socket 编程接口编写程序,分别为客户程序和服务器程序()和管理程序。1.1.2、课程设计的基本要求.巩固和加深对计算机网络原理的理解,提高综合运用本课程所学知识的能力。.培养选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。.通过实际分析设计、编程调试,掌握计算机网络通信的基本规程,以及协议的利用方法,体会体系结构分层的思路。.能够按要求编写课程设计报告书,能正确阐述设计和设计结果、正确绘制系

4、统和程序框图。.通过课程设计,培养严谨的科学态度,严肃认真的工作作风,和团队协作精神。二、设计基本思路及相关理论1.2.1、TCP/IP协议TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接

5、,由于TCP是面向连接的所以只能用于点对点的通讯。 TCP提供的是一种可靠的数据流服务,采用一种称为“滑动窗口”的方式进行流量控制。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 1.2.2、客户机/服务器模型网络应用层程序一般都是以客户机/服务器模型的方式工作的,而因特网便是客户机/服务器模型的一个典型应用。在这种工作方式中,一个服务器程序先启动,并在一个熟知端口侦听对服务器的请求,当客户机应用程序需要某种服务时,须向提供这种服务的服务器发出请求,服务器在接收

6、到请求后,向客户机发出响应请求信息。这样客户机用用程序和服务器程序之间变建立了连接,此后可以进行数据通信。通信任务完成后需要关闭它们之间的通信连接。图1 客户机/服务器模型的工作流程1.2.3、设计基本思路设计程序使客户端连接的时候,服务器将会向客户端发回一条消息告知它的IP地址,然后关闭连接并继续接收端口的连接。建立各个命令功能对应的函数,发送请求,等待服务器端的服务。服务器端初始化WinSock,创建SOCKET,获取主机信息,并对客户端进行会话,发送回复讯息给客户端,响应完毕后关闭连接,释放WinSock。模拟TCP/IP协议的工作模式,在双方工作的时候开设一个熟知端口(4523),进行

7、数据的传送与接收。模拟TCP工作机制,确定数据端口传送数据时,进行分组传送。服务器从打开开始,保持监听控制端口,当用户登陆成功后,主动分配该用户服务线程。在传送数据的时候,为了确保不影响原程序的工作,应独立分配线程。本设计基本图如下:第二章 设计概要 功能设计本项目是为了实现基于Socket进行文件传输的功能。项目的分析及设计要求如下:1)整个系统中分为服务器端(Server)和客户端(Client)2)服务器端可以对文件进行管理,包括上传,下载,删除文件,重命名等3)客服端可以实现文件的上传、下载以及查看服务器下默认目录的文件列表4)在程序中应用多线程来实现多个客户端同时对一个服务器端进行请

8、求操作 程序系统功能模块图 功能分析2.3.1 功能流程图: 图 面向连接的客户机/服务器程序工作模型2.3.2 程序主要功能说明主要功能实现代码如下:1.服务器端; ch = EOF; send(conSock, &ch, 1, 0); printf(nTransmission finished);int main() WSADATA words; if(WSAStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init failed!n); SOCKET listenSock, conSock; sockaddr_in remoteAddr;

9、int remoteAddrLen, int ServerAddrLen; listenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (listenSock = INVALID_SOCKET) printf(ListenSocket create failed!n); return 0; sockaddr_in sin; = AF_INET; = htons(LISTENPORT); = INADDR_ANY; ServerAddrLen = sizeof(sin); if (bind(listenSock, (sockaddr *)

10、&sin, ServerAddrLen) = SOCKET_ERROR) printf(Bind error!n); return 0; if (listen(listenSock, 2) = SOCKET_ERROR) printf(Cant listen!n); return 0; remoteAddrLen = sizeof(remoteAddr); while (TRUE) conSock = accept(listenSock, (sockaddr *)& remoteAddr, &remoteAddrLen); if (conSock = INVALID_SOCKET) print

11、f(Accept failed!n); continue; else printf(Accept a new connect : %s rn, inet_ntoa); sendFile(conSock); closesocket(conSock); closesocket(listenSock); WSACleanup(); return 1; 2.客户端; printf(nTransmission finishedn);int main() WSADATA words; if(WSAStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init f

12、ailedn); SOCKET conSock; conSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conSock = INVALID_SOCKET) printf(Socket create failedn); return 0; sockaddr_in servAddr; = AF_INET; = htons(SERVERPORT); = inet_addr(); if (connect(conSock, (sockaddr *)& servAddr, sizeof(servAddr) = -1) printf(Connect

13、 failedn); return 0; else printf(Connect to server succeedn); receiveFile(conSock); closesocket(conSock); WSACleanup(); return 1;3.管理系统#include #include #include #include #include #define SYS_SIZE 0XFFFFF*100 #define BLOCK_SIZE 512 FILE *f;struct filsys int s_nfree; long s_free100; int s_ninode; int

14、 s_inode96; *p;struct index_block int s_nfree; long s_free96;q;struct filelist char name14; int inode_num; file;struct inode int i_size; int block_amount; long i_addr16; char create_time25; inode;struct fcb char name12; int inode_num; int used; int i_size; int block_amount; long i_addr16; fcb5,*ptr;

15、struct open_file_table int offset; struct fcb* f_node; table5;struct fd struct open_file_table* t_node; fd5;FILE* apply_room(char *sys_name) f = fopen(sys_name,w+b); sed=1) if(!strcmp(fcbk.name,name) return fcbk.inode_num; k+; while(k5); return -1; void create() int i,inode_num; long t; char name12;

16、 printf(input file name:); scanf(%s,name); getchar(); if(namei(name)!=-1) printf(file exited!n); else inode_num=ialloc(); strcpy,name); =inode_num; fseek(f,BLOCK_SIZE+inode_num*16,SEEK_SET); fwrite(&file,sizeof(struct filelist),1,f); =0; =0; for(i=0;is_inodeinode_num=0; printf(create sucessfully!n);

17、 void display() int k; for(k=0;ks_inodek=0) fseek(f,BLOCK_SIZE+k*16,SEEK_SET); fread(&file,sizeof(struct filelist),1,f); printf(%s ,; fseek(f,4*BLOCK_SIZE+*sizeof(struct inode),SEEK_SET); fread(&inode,sizeof(struct inode),1,f); printf(size: ,; printf(time:%sn,; ; printf(n); getchar();void open_file(

18、) int i=0,j=0,k=0; int m,n; char name12; printf(input files name:); scanf(%s,name); getchar(); n=namei(name); if(n=-1) printf(file not exits!n); else if(p-s_inoden0) printf(file have already been opened!n); else while(fcbi.used=1) i+; while(tablej.f_node) j+; while(fdk.t_node) k+; fdk.t_node=&tablej

19、; tablej.f_node=&fcbi; strcpy(fcbi.name,name); fcbi.inode_num=n; fcbi.used=1; fseek(f,4*BLOCK_SIZE+n*sizeof(struct inode),SEEK_SET); fread(&inode,sizeof(struct inode),1,f); fcbi.i_size=; fcbi.block_amount=; for(m=0;ms_inoden=k+100; printf(file is open!n); void write_file() int sizeQ2; int k,block_am

20、ount,n,size=0,i=0; long block_num; char ch,name12; printf(input files name:); scanf(%s,name); getchar(); n=name_i(name); if(n=-1) printf(file not exits or not open!n); else k=p-s_inoden-100; ptr=fdk.t_node-f_node; while(iblock_amount) block_num=ptr-i_addri; myfree(block_num); i+; block_amount=0; pri

21、ntf(input the context of the file:(end the file with *)n); while(ch=getchar()!=*&block_amounti_addrblock_amount=block_num; block_amount+; fseek(f,(block_num-1)*BLOCK_SIZE,SEEK_SET); fputc(ch,f); getchar(); =ptr-i_size=size; =ptr-block_amount=block_amount; fseek(f,4*BLOCK_SIZE+n*sizeof(struct inode),

22、SEEK_SET); fwrite(&inode,sizeof(struct inode),1,f); void read_file() int k,n,block_amount,size; int i=0; long block_num; char name12,buf512; printf(input files name:); scanf(%s,name); getchar(); n=name_i(name); if(n=-1) printf(file not exits or not open!); else k=p-s_inoden-100; ptr=fdk.t_node-f_nod

23、e; size=ptr-i_size; block_amount=ptr-block_amount; for(i=0;ii_addri; fseek(f,(block_num-1)*BLOCK_SIZE,SEEK_SET); if(size512) fread(buf,sizeof(char),512,f); size=size-512; else fread(buf,sizeof(char),size,f); bufsize=0; printf(%s,buf); printf(n);void del_file() int n,i=0; long block_num; char name12;

24、 printf(input files name:); scanf(%s,name); getchar(); n=namei(name); if(n=-1) printf(file not exits!n); else if(p-s_inoden0) printf(file is open now!Close it firstn); else p-s_inoden=-1; fseek(f,4*BLOCK_SIZE+n*sizeof(struct inode),SEEK_SET); fread(&inode,sizeof(struct inode),1,f); while(is_inoden-1

25、00; fdk.t_node-f_node-used=0; fdk.t_node-f_node=NULL; fdk.t_node=NULL; p-s_inoden=0; printf(file is closed!n); void myexit() int i=0; char ch; while(fcbi.used=0) i+; if(i5) getchar(); printf(some files are still open!n); printf(input q to quit or other key to return:n); scanf(%c,&ch); if(ch=q) while

26、(is_inodefcbi.inode_num=0; i+; fseek(f,0,SEEK_SET); fwrite(p,sizeof(struct filsys),1,f); exit(0); getchar(); else fseek(f,0,SEEK_SET); fwrite(p,sizeof(struct filsys),1,f); exit(0); void main() int i; char ch,sys_name15; p=(struct filsys *)malloc(sizeof(struct filsys); while(1) printf(1:Create a new file systemn); printf(2:open an existed file systemn); p

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1