欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

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

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络文件传输及管理系统课程设计报告.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 课程设计内容文件传输

    3、协议的简单设计与实现:学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧,加深对客户/服务器的工作模式的认识。用socket 编程接口编写程序,分别为客户程序(ftpclient.cpp)和服务器程序(ftpserver.cpp)和管理程序。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协议的工作

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

    8、4)在程序中应用多线程来实现多个客户端同时对一个服务器端进行请求操作2.2 程序系统功能模块图2.12.3 功能分析2.3.1 功能流程图: 图2.2 面向连接的客户机/服务器程序工作模型2.3.2 程序主要功能说明主要功能实现代码如下:1.服务器端/server.cpp#include #include #include #include #define LISTENPORT 12345#pragma comment(lib,Wsock32)#pragma comment(lib,ws2_32)sendFile(SOCKET conSock) printf(Prapare to send f

    9、ilen); char *sendBuf = new char100; FILE *in; char infile50 ; printf(选择要传输的文件); scanf(%ns,infile); if(in=fopen(infile,rb)=NULL) printf(Cant open the source file); exit(0); printf(File name is %sn, infile); / send file name to the client send(conSock, infile, sizeof(infile), 0); int handle = open(inf

    10、ile, 0x0001); long file_len = filelength(handle); long file_len_bak = file_len; printf(Size of the file is %dn, file_len); / store the length of the file in sendBuffer int i; for (i = 0; file_len 9; i+) sendBufi = (file_len % 10); file_len = file_len / 10; sendBufi = file_len % 10; send(conSock, sen

    11、dBuf, i + 1, 0); printf(Transmission startedn); Sleep(1); char ch; char chack; while (file_len_bak != 0) ch = fgetc(in); send(conSock, &ch, 1, 0); recv(conSock, &chack, 1, 0); file_len_bak-; printf(.); ch = EOF; send(conSock, &ch, 1, 0); printf(nTransmission finished);int main() WSADATA words; if(WS

    12、AStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init failed!n); SOCKET listenSock, conSock; sockaddr_in remoteAddr; int remoteAddrLen, int ServerAddrLen; listenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (listenSock = INVALID_SOCKET) printf(ListenSocket create failed!n); return 0; sockadd

    13、r_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(LISTENPORT); sin.sin_addr.S_un.S_addr = INADDR_ANY; ServerAddrLen = sizeof(sin); if (bind(listenSock, (sockaddr *)&sin, ServerAddrLen) = SOCKET_ERROR) printf(Bind error!n); return 0; if (listen(listenSock, 2) = SOCKET_ERROR) printf(Cant listen

    14、!n); return 0; remoteAddrLen = sizeof(remoteAddr); while (TRUE) conSock = accept(listenSock, (sockaddr *)& remoteAddr, &remoteAddrLen); if (conSock = INVALID_SOCKET) printf(Accept failed!n); continue; else printf(Accept a new connect : %s rn, inet_ntoa(remoteAddr.sin_addr); sendFile(conSock); closes

    15、ocket(conSock); closesocket(listenSock); WSACleanup(); return 1; 2.客户端/client.cpp#include #include #include #include using namespace std;#define SERVERPORT 12345#pragma comment(lib, Wsock32)#pragma comment(lib, ws2_32)receiveFile(SOCKET consock) printf(Prepare to receive filen); FILE *dest; char des

    16、tfile50; char recvBuff100; / Receive name of the file int namelen = recv(consock, recvBuff, 100, 0); memcpy(destfile, recvBuff, namelen); printf(Name of the file is %s n, destfile); if(dest=fopen(destfile,wb)=NULL) printf(Cant open the dest file); exit(0); / Receive size of the file int flag_file_le

    17、n = recv(consock, recvBuff, 100, 0); long file_len = 0; for (int i = 0; flag_file_len != 0; i+) long temp = recvBuffi; for (int j = 0; j != i; j+) temp = temp * 10; file_len = file_len + temp; flag_file_len-; printf(Size of the file is %ldn, file_len); printf(Ready to receive filen); char ch; char c

    18、hack = 1; int n; while ( recv(consock, &ch, 1, 0) fputc(ch, dest); send(consock, &chack, 1, 0); file_len-; if (file_len = 0) break; printf(.); printf(nTransmission finishedn);int main() WSADATA words; if(WSAStartup(MAKEWORD(2,2),&words)!=0) printf(Winsock init failedn); SOCKET conSock; conSock = soc

    19、ket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conSock = INVALID_SOCKET) printf(Socket create failedn); return 0; sockaddr_in servAddr; servAddr.sin_family = AF_INET; servAddr.sin_port = htons(SERVERPORT); servAddr.sin_addr.S_un.S_addr = inet_addr(127.0.0.1); if (connect(conSock, (sockaddr *)& servAddr

    20、, sizeof(servAddr) = -1) printf(Connect 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_n

    21、free; long s_free100; int s_ninode; int 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

    22、block_amount; long i_addr16; fcb5,*ptr;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); /创建一个新的可读写的二进制文件 fseek(f,SYS_SIZE,SEEK_SET); fputc(EOF, f); fclose(f); return fopen(sys_name,r+

    23、b); /打开一个可读写的二进制文件void myfree(long block_num) int i; if(p-s_nfrees_freep-s_nfree=block_num; p-s_nfree+; else q.s_nfree=p-s_nfree; for(i=0;is_freei; fseek(f,(block_num-1)*BLOCK_SIZE,SEEK_SET); fwrite(&q,sizeof(struct index_block),1,f); p-s_nfree=1; p-s_free0=block_num; long myalloc() int i; long a; p

    24、-s_nfree-; if(p-s_nfree=0) a=p-s_free0; fseek(f,(a-1)*BLOCK_SIZE,SEEK_SET); fread(&q,sizeof(struct index_block),1,f); p-s_nfree=q.s_nfree; for(i=0;is_freei=q.s_freei; return a; else return p-s_freep-s_nfree;void init() int j; long i; p-s_nfree=1; p-s_free0=0; p-s_ninode=96; for(i=0;is_inodei=-1; for

    25、(i=22;is_nfree+1; while(js_freej+=0; fseek(f,0,SEEK_SET); fwrite(p,sizeof(struct filsys),1,f);int ialloc() int i=0; while(p-s_inodei=0) i+; p-s_inodei=0; p-s_ninode-; return i;int namei(char *name) int k=0; while(ks_inodek!=-1) fseek(f,BLOCK_SIZE+k*16,SEEK_SET); fread(&file,sizeof(struct filelist),1

    26、,f); if(!strcmp(file.name,name) return file.inode_num; k+; ; return -1; int name_i(char *name) int k=0; do if(fcbk.used=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; printf(input file name:); scanf(%s,name); getchar

    27、(); if(namei(name)!=-1) printf(file exited!n); else inode_num=ialloc(); strcpy(file.name,name); file.inode_num=inode_num; fseek(f,BLOCK_SIZE+inode_num*16,SEEK_SET); fwrite(&file,sizeof(struct filelist),1,f); inode.i_size=0; inode.block_amount=0; for(i=0;is_inodeinode_num=0; printf(create sucessfully!n); void display() int k; for(k=0;ks_inodek=0) fseek(f,BLOCK_SIZE+k*16,SE


    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开