P2P文件传输平台的设计与实现
梁国辉P2P文件传输实现
课程设计报告学院:天津理工大学华信软件学院专业名称:软件工程课程名称:网络技术课程设计课程代码:1480020所在班级:6班学号:20114986姓名:梁国辉课题名称:基于C++的P2P文件传输任课教师:魏立华完成时间:2013年3月-2013年6月绪论我们小组研究的课题是基于C++的P2P文件传输,在这次合作中我主要负责Winsock网络程序设计以及Socket的建立和使用,系统的详细设计是我们三人共同完成的每个人的完成渠道也略有不同。
下面是我通过查找资料所了解的关于P2P的相关背景以及知识内容介绍。
如下:1. P2P 相关背景一般计算和因特网特殊计算的历史演进:因特网边界计算:如SETI@home和其它分布式计算系统内容共享的社会方面:如Napster音乐和其他文件/内容共享系统计算机,网络通信技术的进步和改进大型机->桌面PC ->便携机->手持设备(手机)使通信和协同变得更方便P2P软件结构:如JXTA,.NET开发的P2P算法:如Gnutella,FreeNet2. P2P之目标:满足应用需要共享/削减成本:Napster 共享文件空间,SETI@home聚合未用资源改进可扩展性/可靠性:对缺乏很强中心授权的自治对等端这点尤为重要资源聚合与互操作能力增加自治匿名/隐私:自治的理念和结果.用户不希望任何人或ISP知道其包含在系统中动态性;资源动态进入或离开系统实现Ad-hoc通信和协同,动态的理念和结果P2P解决方案3.P2P分类所有的计算机系统可分为集中式和分布式两类分布式可进一步划分为C/S和P2P模式C/S模式可划分为扁平:所有的客户端仅仅和单个服务器(含重复服务器)通信,如传统的中间件分层:提高可扩展性,某层的服务器又作为更高层的客户端4. 故障适应力P2P主要目标之一是避免中心点失效尽管大多数纯P2P已经做到,不过是通过生成多主机和多网络来面对如下失效:断开,不可达,分离和节点失效(无线比有线企业网表现更厉害)Genome@home在连接的Peers上执行分割计算,当某些Peers因链路断连而消失,希望计算继续;消失Peers再现后,能合并原来结果继续计算吗5. 交互能力交互需求,系统怎样知道它能交互怎样通信,用何协议:Sockets,Message or HTTP怎样交换请求和数据,在高层执行任务,交换文件或搜索数据怎样知道它在更高层协议是兼容的,如一个系统能依赖另一系统适当搜索一些信息吗怎样通告并维护同级安全,QOS和可靠性P2P工作组从Ad-hoc到Grid聚集开发者JXTA是交互操作方法的开放源代码目录第一章 Winsock网络程序设计技术1.1 Winsock简介 (1)1.2 Winsock通信机制 (2)第二章Socket的建立和使用2.1 建立一个Socket (5)2.2 配置一个Socket (6)2.3 使用Socket (7)第三章系统详细设计3.1系统总体设计 (8)3.2系统功能模块设计 (9)3.2.1 服务器模块 (9)3.2.2 客户端模块 (13)3.2.3 界面显示模块 (14)第四章 P2P的性能问题4.1 P2P的系统目标以及带来的信息安全问题......................... 结论附录第一章Winsock网络程序设计技术1.1 Winsock简介为了方便网络编程,Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口[6],即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。
P2P 网络中的在线文件传输技术研究与应用
P2P 网络中的在线文件传输技术研究与应用随着科技的快速发展,传统的文件传输方式越来越难以满足人们日益增长的需求,P2P 网络中的在线文件传输技术成为了一种备受青睐的替代方式。
这种技术的出现极大地方便了人们的文件传输,同时也提高了文件传输的安全性和效率。
本文将重点探讨 P2P 网络中的在线文件传输技术的研究与应用,并对其优劣势进行分析。
一、P2P 网络简介P2P 是指点对点的网络结构,相比于传统的中心化网络结构具有更强的去中心化特点。
P2P 网络中的每一节点都可以充当中心节点,实现了节点之间的平等互联,数据在网络中的流通并不需要经过某个指定的中心节点。
这一特点也是 P2P 网络联通性好、资源共享广泛的主要原因之一。
二、P2P 网络中的在线文件传输技术研究1. P2P 文件传输原理P2P 文件传输原理就是将文件分割成多个片段,并在节点之间传递,最终完成文件的重组。
这种文件传输方式利用到了网络中的每个节点,数据分发更加均匀。
因此,P2P 文件传输不论是在效率还是速度上都能够得到很好的提升。
2. 文件HASH值的传输P2P 文件传输的一个重要特点是保证下载文件的完整性。
为了达到这一目的,P2P 网络中通常会传输文件的 HASH 值,这种 160 位的传输方式被广泛应用于 P2P 网络中的在线文件传输技术。
当文件接收者收到 HASH 值后,就可以通过对该文件的 HASH 值进行计算,来确定文件的完整性是否受到了破坏。
3. BT 协议BT(BitTorrent)协议是 P2P 网络中最广泛应用的协议之一。
BT 协议的工作方式是,将文件进行分片,然后将这些分片划分到每个节点上,让每个节点同时下载这些分片,最终合并成完整的文件。
BT 协议因为其高效、快速的传输方式,成为了 P2P 网络中最受欢迎的协议之一。
三、P2P 网络中的在线文件传输技术应用P2P 网络中的在线文件传输技术已经被广泛应用于各个领域,特别是在大文件传输上、在线视频观看上,它的应用表现得尤为突出。
远程信息的P2P传输方案设计与实现
K e r s: rv t P; P ; y wo d P ae I P2 NAT a e i Fie ta s s in i Tr v r ng; l r n miso s
0 引 言
随着 网络 的快 速发展 , t n t I e e 最初 的单一 地 址 nr
法并 不适 用 。基 于 以上 的 的 原 因 , 们使 用 P P技 我 2 术来 解决 这类 问题 。 P P技术 是 点 对点 的通信 技 术 , 过 网络 地 址 2 通 转 换 ( N T3 即 A l )实 现 通 信 并 完 成 文 件 传 输 。 4
网络已经被新体系结构所代替 。新的体系结构拥有 全 球有效 地址域 和 私有 地址 域 两 个部 分 … , 当前 而
存 在大量 中小规模 企业 的分 支机构 处于不 同的防火 墙之后 , 它们 属于 不 同 的私 有地 址 域 。传 统 的基 于 全球有效 地址 域的 网络传输 方法无 法完 成不 同私有 地址域 内节点 间 的直 接互相 通信 。如何 高速 有效地 完成不 同私有 地址 域 内节点 间的通信 和文件 传输 已 成 为当前研 究的热 点和难 点 。 目前 It t 进行 信 息传 输 主 要采 用 传 统 的 ne 上 me C S模式 , / 即客 户端/ 务 器模 式 , 求 服 务 器 有 固 服 要
方 案。实验表明 , 系统能够很好 的适用于不同私网问主机点 对点远 程信息传 输 , 该 同时具有低 资源耗 费及快速性
和 可靠 性 等 特 点 。
关键词 : 私有 I ;2 N T穿越 ; P P P; A 文件传输
中 图分 类号 :P 9 T 33 文 献标 识 码 : A
基于P2P的文件共享系统毕业设计
1 绪论1.1 论文课题概述1.1.1 课题背景可以说文件交换的需求直接引发了P2P技术热潮。
在传统的WEB方式中,要实现文件交换需要服务器的大力参与,通过将文件上传到某个特定的网站,用户再到某个网站搜索需要的文件,然后下载,这种方式的不便之处不言而喻。
电子邮件是方便了个人间文件传递问题,却没法解决大范围的交换。
这也是WEB的重要缺陷,P2P就是在情况下横空出世。
P2P很好的解决了传统的C/S模式下瓶颈问题,让资源共享变的更方便,快捷。
用户直接和用户之间进行数据交换,改变了传统的模式。
1.1.2 课题目的和意义本课题最终成果是完成一个基于P2P的文件共享系统。
该系统可以发现网络上的共享资源,并根据自己的需求下载自己需要的资源。
在传输过程中还要保证数据传输的完整和安全。
本课题的基础是文件共享和P2P理论,涉及到知识管理、计算机网络、分布式存储和心理学等领域相关理论。
针对不同的应用需求,人们提出了许多共享方式,以不同的方式来共享不同的内容以满足人们的需求。
但是这些方法都不够全面,没有提出很好的文件共享模式,更加没有很好的解决文件共享的需求。
特别是在信息飞速增长的年代,人们对于信息的筛选即真正知识的共享的需求越来越强烈,而人类社会发展至今,亦未能找到很好的文件共享的模式和手段。
在理论上,本课题探寻文件共享的基础理论——知识管理理论、计算机网络、分布式存储和心理学——中相关研究成果的新结合点,研究在现有理论基础上如何更好的满足人们文件共享的需求,采用分布式、高效的基于P2P技术构建的文件共享网络这种文件共享模式,并明确提出了P2P文件共享网络的整个架构,同时,提出了一个P2P环境下维护数据一致性和可用性的算法;在实践上,课题要实现了一个简单的P2P知识共享网络的框架,给出了原型实现,经过小范围的实验和部署,能够证明P2P文件共享网络能够提供很高的可用性,并且文件共享的效果也应该很好。
此外,通过编写此系统,我又进一步熟悉了网络体系结构,TCP/IP协议的知识,熟练掌握了Socket编程,MFC编程,多线程编程,掌握了利用VC++进行网络开发的过程和步骤,为今后从事软件行业奠定了基础。
P2P文件共享程序——面向对象综合设计报告
合肥学院计算机科学与技术系课程设计报告2012~2013学年第一学期课程JAVA语言课程设计名称P2P 文件共享程序学生姓名学号1104014002专业班级11计算机科学与技术4班指导教师张贯虹、胡春玲2013 年1月一.设计题目及具体要求编写一个可以进行点对点的文件共享程序,能够进行网络上的文件共享和传输。
该程序软件可以在任何一个标准配置的主机上运行,运行该程序的主机既是客户端,也是服务器端,是一个多线程程序。
作为服务器端,运行一个服务器线程始终监听指定的端口,如果网络上有其他主机要求建立连接,互相交换共享文件信息,双方就可以互相下载对方共享的文件。
二.总体设计思路本程序仅有一个P2P.java的源码文件。
该文件中共有有四个类:P2P、suface、receive、send。
其中P2P为主类,程序启动后,由P2P中主函数public static void main(String args[])实例化一个surface对象。
Surface继承自frame类,并实现ActionListener接口,由它实现窗口界面与事件响应,并与用户交互。
Surface根据用户作出的具体操作选择(接收或分享)启动一个receive或send线程,由最终由receive线程对象完成接收操作,由send线程对象完成分享操作。
三.具体设计全局流程图:本程序涉及成员变量与方法名称种类功能从属sur surface类对象用户交互P2P main 主方法程序执行入口P2Pgb GridBagConstraints类对象自定义界面网格布局surfacegbl GridBagLayout类对象网格布局surfaceb1\b2\b3 \b4 Button类对象界面按钮surfacel1\linfo\si nfo Label对象标签,显示信息surfacetf TextField类对象文本框,输入对方IP地址surfacesfile\lfile string类对象文件名,存储文件位置surfac eload\save filedialog类对象打开\保存文件对话框surfaceiss; 布尔值记录用户选择分享\ 接收surfac esurface() surface类构造方法——surfaceactionPer formed()ActionListener接口中方法实现事件响应并启动线程surfacese\re send\receive类线程对象实现分享\接收功能surfaces socket类对象发起连接receive\sendfile file类对象表示进行I\O操作的文件receiv e\sendstr int值方便数据I\Oreceiv e\sendra InetAddress值表示对方IP地址receiv e\sendss ServerSocket类对象监听端口,接收连接receive\sendin InputStream输入流receiv类对象 efos FileOutputStream类对象文件输出流receivebos BufferedOutputStream 缓冲流receivereceive receive构造方法接收文件位置等参数receiveout OutputStream类对象输出流sendfis FileInputStream类对象文件输入流sendbis BufferedInputStream缓冲流send send send send send 用户交互模块:public void actionPerformed(ActionEvent e){if(e.getActionCommand()=="分享"){//用户选择分享load =new FileDialog(this,"请选择需要分享的文件", FileDialog.LOAD);load.show();//弹出文件对话框lfile = load.getDirectory()+ load.getFile();iss =true;//记录“分享”选择}if(e.getActionCommand()=="接收"){//用户选择接收save =new FileDialog(this,"请选择存放文件位置及文件名", FileDialog.SAVE);save.show();//弹出文件对话框sfile = save.getDirectory()+ save.getFile();iss =false;//记录“接收”选择}if(e.getActionCommand()=="本机接受连接"){if(iss){//若用户事先选择“分享”send se =new send(new File(lfile));se.start();//启动分享线程l1.setText("开始分享");}else{//若用户事先选择“接收”l1.setText("开始接收");receive re =new receive(new File(sfile));re.start();//启动接收线程}}if(e.getActionCommand()=="本机发起连接"){if(iss){//若用户事先选择“分享”send se;l1.setText("开始分享");try{se =new send(new File(lfile),InetAddress.getByName(tf.getText()));se.start();//启动发送线程}catch(UnknownHostException e1){l1.setText("输入地址有误!");}}else{//若用户事先选择“接收”receive re;l1.setText("开始接收");try{re =new receive(new File(sfile),InetAddress.getByName(tf .getText()));re.start();//启动接收线程}catch(UnknownHostException e1){l1.setText("输入地址有误!");}}}}}接收模块:class receive extends Thread {Socket s;File file;InputStream in;FileOutputStream fos;BufferedOutputStream bos;int str;InetAddress ra;receive(File file, InetAddress ra){//本地发起连接时构造方法(接收对方地址)this.file = file;this.ra = ra;}receive(File file){//本地接收连接时构造方法this.file = file;}public void run(){try{this.fos =new FileOutputStream(file);//建立文件输出流}catch(FileNotFoundException e1){surface.rinfo.setText("文件打开失败!");}try{this.bos =new BufferedOutputStream(fos);if(ra ==null){//若未得对方地址,表示本机接收连接ServerSocket ss =new ServerSocket(9999);//监听端口9999 s = ss.accept();}else//否则本机发起连接s =new Socket(ra,9999);in = s.getInputStream();while((str = in.read())!=-1)//读入输入流直至末尾bos.write(str);surface.rinfo.setText("接收成功!");bos.close();fos.close();in.close();s.close();}catch(IOException e){surface.rinfo.setText("接收失败!");}}}分享模块:class send extends Thread {Socket s;File file;int info;OutputStream out;FileInputStream fis;BufferedInputStream bis;int str;InetAddress ra;send(File file, InetAddress ra){//本地发起连接时构造方法(接收对方地址)this.file = file;this.ra = ra;}send(File file){//本地接收连接时构造方法this.file = file;}public void run(){try{this.fis =new FileInputStream(file);//建立文件输入流}catch(FileNotFoundException e1){surface.sinfo.setText("文件打开失败!");}try{this.bis =new BufferedInputStream(fis);if(ra ==null){//若未得对方地址,表示本机接收连接ServerSocket ss =new ServerSocket(9999);//监听端口9999 s = ss.accept();}else//否则本机发起连接s =new Socket(ra,9999);out = s.getOutputStream();while((str = bis.read())!=-1)//读入缓冲输入流直至末尾out.write(str);surface.sinfo.setText("分享成功!"); bis.close();fis.close();out.close();s.close();}catch(IOException e){surface.sinfo.setText("分享失败!");}}}1.程序启动界面2.接收成功界面3.分享成功界面4.对方IP输入有误,传输失败。
P2P文档共享软件设计文档
P2P文档共享软件设计文档服务端实现服务端的实现主要用到Java Socket编程,服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。
首先ServerSocket 将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。
这样就有两个Socket了,客户端和服务端各一个。
Java中ServerSocket是处理通信实体连接请求的类,ServerSocket 对象用于监听来自客户端的请求,在ServerSocket对象包含一个监听来自客户端连接请求的方法,Socket accept( )。
服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。
Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。
因此文件共享系统的实现的数据库设计如下:表user用来存储用户的用户名、密码、ip地址以及是否在线等信息。
表名:user用户上传资源的时候需要向服务端上传的信息包括文件名称、文件尺寸、文件路径以及上传人的id。
表名:resource由于使用BufferedReader的方法读取数据时,在该方法成功返回之前,线程被阻塞,程序无法继续执行。
服务器端主程序监听某一个端口,客户端发起连接请求,服务器端主程序接收请求,同时构造一个线程类,用于接管会话,当一个Socket会话产生后,这个会话就会交给线程进行处理,主程序继续进行监听。
因此服务端应该为每个Socket单独启动一个线程,每个线程负责与一个客户端进行通信。
在服务端中代码中,如果收到一个来自客户端的连接请求,类myServer 负责实现创建Socket连接,并且为该客户端用户分配一个线程。
当客户端、服务端产生了对应的Socket连接之后,就可以通过各自的Socket进行通信,Socket提供了两个方法来获取输入流和输出流InputStream getInputStream() 和OutputStream getOutputStream()。
P2P文件传输软件的设计与实现
P2P文件传输软件的设计与实现
姚烨
【期刊名称】《计算机光盘软件与应用》
【年(卷),期】2011(000)010
【摘要】本系统是在深入了解P2P技术和JAVA实现平台的基础上,设计实现的基于JAVA的P2P文件传输软件,在局域网内实现点对点的文件传输功能.本系统的优点是在一个网络内每个Windows平台的客户机只需要同时安装了这款软件,即可实现相互文件传输和简易聊天.
【总页数】1页(P183-183)
【作者】姚烨
【作者单位】中国矿业大学计算机学院,江苏,徐州,221008
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.P2P网络仿真软件设计与实现 [J], 于振洋
2.P2P多点共享传输软件的设计与实现 [J], 赵专政
3.移动互联网下基于RS编码的文件传输软件设计与实现 [J], 文艾
4.基于P2P技术远程辅助教学软件设计与实现 [J], 陈红艳;
5.基于VxWorks实时操作系统的文件传输软件的设计与实现 [J], 谢佑波;万福;袁朝晖;许建南
因版权原因,仅展示原文概要,查看原文内容请购买。
P2P文件共享系统的设计与优化
P2P文件共享系统的设计与优化随着互联网技术的不断发展,P2P(Peer-to-Peer)文件共享系统已经成为人们在互联网上分享和交换文件的主要手段之一。
其实现方式是通过将文件分为多个小块,并将这些小块分别上传到各个用户的计算机中,这样就可以利用所有用户的计算能力和硬盘空间来完成文件的共享。
在这篇文章中,我们将探讨P2P文件共享系统的设计和优化。
一、P2P文件共享系统的基本原理P2P文件共享系统的基本原理是通过将文件划分为多个相等的小块,在不同的计算机之间进行分发和共享。
用户只需要从系统中下载一个文件的某个块,就可以从其他用户的计算机上下载其他块,以此来实现文件的下载。
同时,P2P文件共享系统通过利用分布式算法来协调用户之间的通信和数据传输。
通过这种方式,可以在不需要中央服务器的情况下,实现高效的文件共享和数据传输。
二、P2P文件共享系统的优点1.高效性:P2P文件共享系统可以利用所有参与共享的用户的计算能力和硬盘空间来进行文件下载和上传。
这样,在大量用户同时进行文件共享时,文件下载的速度会更快。
相对于传统的文件下载方式,P2P文件共享系统可以显著提高文件传输的速度和效率。
2.可扩展性:P2P文件共享系统可以通过添加新的用户来扩展自身的能力。
这意味着,P2P文件共享系统可以在不需要增加中央服务器的情况下,实现无限的扩展。
3.便携性:P2P文件共享系统可以在不受时间和地域限制的情况下进行文件共享。
这意味着,用户可以从任何地方使用P2P文件共享系统来下载所需的文件。
三、P2P文件共享系统的设计P2P文件共享系统的设计包括两个方面:文件的分块和节点的选取。
1.文件分块文件的分块是P2P文件共享系统设计的重要一环。
文件分块越细,可以提供更多的下载并行度,加快文件的共享速度。
同时,为了避免小块的过多交互,因此选择适当大小的块非常重要。
同时,为了保证下载效率,需要考虑到下面几个问题:(1)块大小应该在合理的范围内。
P2P文件共享系统的实现分析
摘要:系统QtP2Pfile-sharingSystem(QPS)是利用Qt开发的P2P文件共享系统。
QPS采用P2P中的混合模式,此模式结合了集中目录式和纯分布式两者的优点,在实现上具有简易性,在共享度上具有很强的扩展性。
QPS的最大特点是加入了策略。
这种策略能限制一些用户只下载而不共享资源的行为。
策略的引入是为了鼓励用户与其他人分享自己的资源,而不仅仅是索取。
入策略的QPS不仅能比较有效的限制只下载不分享的行为,而且对系统的寿命也有相当程度的提高。
关键词:文件共享;P2P;策略;QtC/S式架构造就了一批著名的门户网站,如雅虎,新浪等。
这些网站容易受到黑客的亲睐后果是服务崩溃。
C/S式架构只有一个服务器或服务机群,服务器一旦崩溃,它提供的服务也将停止。
而P2P式架构却正好相反,它没有服务器(相对C/S 架构而言)或服务器是分布的,一个服务器崩溃了,其他的服务器照样能提供服务。
这种架构能有效的抵抗DDOS攻击,它的安全性有很可靠的保障。
另外,采用P2P式架构的网络资源共享系统不但大大的减轻了单个服务器的负担,而且也提高了很大的安全性。
人们也可以通过这种架构建立自己的信息天地,与其他的人分享自己的资源。
1系统设计实现的重点与难点系统QPS在Linux上用Qt开发,系统设计原理和策略都并不复杂,但这不代表系统的实现也是简单的。
对于系统的整个实现来说,有三个地方是最重要的,也是比较难的。
先介绍系统运行流程:(1)Group-leaderpeer运行,并连接上其他的任意某个Group-leaderpeer;(2)Ordinarypeer连接(登陆)某个Group-leaderpeer,并把所资源表发送个Group-leaderpeer;(3)Group-leaderpeer将已连接的其他PC的资源表发送给此ordinarypeer;(4)Ordinarypeer浏览资源并选择下载或则向Group-leaderpeer发送资源搜索请求;(5)Group-leaderpeer将资源表中符合搜索的资源所在ordinarypeer的IP发给请求ordinarypeer,同时向其他以连接的Group-leaderpeer发送搜索请求,其他的Group-leaderpeer将资源IP反馈,收到反馈后再发送个搜索ordinarypeer;(6)Ordinarypeer从获得的资源表中选择下载,即与另一个ordinarypeer建立连接,下载完毕后断开连接。
基于P2P网络的文件共享系统设计研究
基于P2P网络的文件共享系统设计研究随着互联网的迅速发展,文件共享成为了人们日常生活中的一部分。
而基于P2P网络的文件共享系统作为一种高效、自主、去中心化的共享方式,也逐渐引发了众多开发者和研究者的关注。
本文将从P2P网络的概念、文件共享的基本原理和现有系统的技术特点等角度出发,探讨如何设计一款基于P2P网络的文件共享系统。
一、P2P网络的概念P2P网络即点对点网络,是指一种去中心化的计算机网络,属于分布式系统的一种形式。
P2P网络中,所有的节点拥有同等地位,可以通过网络连接进行直接通信,互相协作实现资源共享、信息传输等功能。
P2P网络能够充分利用节点之间的带宽和计算能力,以达到高效的数据传输和共享。
此外,由于无需中心化的服务器或管理机构,P2P网络也具有一定的自主性和去中心化优势。
二、文件共享的基本原理文件共享的基本原理是将本地文件分享给其他节点,同时也可以从其他节点获取文件资源。
在P2P网络中,文件共享通常是通过BitTorrent协议实现的。
BitTorrent协议的基本思路是将文件划分为若干个信息块,在上传和下载过程中只传输其它节点所需要的信息块。
这样不仅可以降低流量负荷,提高下载速度,也可以充分利用各个节点的带宽和计算能力,避免单点故障和窃取资料的风险。
三、现有P2P文件共享系统的技术特点在现有的P2P文件共享系统中,BitTorrent协议已经得到了广泛应用。
例如,uTorrent、BitTorrent、QTorrent等都是常见的P2P文件共享软件。
这些软件采用了如下技术特点:1. 分布式架构:P2P文件共享系统不依赖于任何中央服务器,而是通过分布式的节点互相通信和协作来实现文件的共享和传输。
2. 信息块划分:P2P文件共享系统将文件划分为若干个信息块,同时将每个信息块与一个哈希值进行绑定。
这样可以校验文件的完整性,防止上传或下载过程中出现文件损坏的问题。
3. 切片技术:P2P文件共享系统通过切割文件成多个切片,来提高文件下载的速度。
P2P文件传输系统的实现毕业论文
P2P文件传输系统的实现毕业论文目录一、引言 (1)二、P2P分布式文件传输系统发展综述 (1)(一)什么是P2P (1)(二)P2P的分类 (2)(三)P2P的技术特点 (4)(四)P2P的应用领域 (5)1、对等计算 (5)2、协同工作 (6)3、搜索引擎 (6)4、文件交换 (7)三、P2P传输系统中算法的研究与分析 (7)(一)资源的定位与搜索算法的分析 (7)1、Chord算法 (7)2、CAN算法 (9)3、Tapestry算法 (11)4、Pastry算法 (12)(二)几种算法的比较 (12)(三)基于超节点改进的Chord方法 (13)(四)洪泛与Chord的结合 (14)四、基于P2P的传输系统的设计与实现 (16)(一)P2P传输系统的框架设计 (16)(二)P2P传输系统的界面设计 (17)1、搜索模块 (17)2、文件下载控制模块 (19)3、文件下载显示模块 (20)(三)P2P传输系统的网络结构设计 (21)1、超节点的选取 (21)2、节点的管理 (22)五、P2P传输系统中关键技术的研究与实现 (23)(一)超节点的选择 (23)(二)节点间通信连接的建立 (25)(三)节点间文件传输的实现 (28)1、断点续传 (28)2、多线程下载 (29)六、总结 (29)参考文献 (31)致谢 (32)一、引言P2P打破了C/S的僵局,将PC机的潜力充分挖掘出来了,给出了一种更灵活、更接近互联网本质的信息组织、共享方案。
P2P技术是充满活力的。
P2P技术创造了一种全新的商业模式,它打破了传统的C/S模式,对等网络中每个节点的地位都是平等的,每个节点既充当服务器,为其他节点提供服务,同时也享用其他节点提供的服务。
传统的C/S模式控制了信息流动,使服务器端充斥了过时信息,阻碍了真正的交流。
P2P技术把控制权重新归还到用户手中去。
人们通过P2P可以共享硬盘上的文件、目录甚至整个硬盘。
计算机类文献综述范文
计算机类文献综述范文计算机类文献综述范文P2P文件共享系统设计与实现--文献综述作者姓名(学号计科系XX级XX班)摘要:对等网(P2P)主要指计算机之间以对等方式形成的网络连接,弱化或完全取消了服务器的作用。
文章首先将对P2P网络的基本概念、技术实现、主要应用进行介绍; 然后分析P2P技术与C/ S模式互联网的区别; 最后介绍了JXTA协议。
关键字:P2P; 文件共享; C/S模式;JX-TA1 引言随着像Napster、Gnutella、Freenet等P2P信息共享应用系统的流行,P2P(Peer—to—Peer,即对等网络)这种完全不同于客户/ 服务器的新一代分布式计算机模型正在受到越来越多的关注,已被《财富》杂志誉为将改变互联网未来的四大新技术之一。
P2P可以简单地定义为通过直接交换信息,共享计算机资源和服务,对等计算机兼有客户机和服务器的功能,在这种网络中所有节点是对等的,这些对等节点具有共同的责任与能力并协同完成服务,它们之间通过直接互连实现信息资源、处理器资源以及存储资源的全面共享,而不需要依赖集中式服务器的支持, 消除了信息孤岛和资源孤岛现象.2 P2P网络技术的研究2。
1 P2P网络的基本概念P2P技术主要指由硬件形成网络连接后的信息控制技术,主要代表形式是在应用层上基于P2P网络协议的客户端软件.IBM为P2P下了如下定义:P2P系统由若干互联协作的计算机构成,且至少具有如下特征之一:系统依存于边缘化( 非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益; 系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。
P2P网络是互联网整体架构的基础,互联网最基本的TCP/IP协议并没有客户端和服务器的概念,在通讯过程中, 所有的设备都是平等的一端。
P2P技术改变了“内容”所在的位置, 使其正在从“中心"走向“边缘”,也就是说内容不再存于主要的服务器上,而是存在所有用户的PC机上。
p2p系统方案
p2p系统方案P2P系统方案1. 简介P2P (Peer-to-Peer) 系统是一种点对点的网络架构,其中每个节点都可以充当客户端和服务器的角色。
与传统的客户端-服务器模型不同,P2P系统不依赖于中央服务器,而是通过直接连接到其他节点来共享资源和服务。
本文将介绍一种P2P系统方案的设计和实施。
2. 系统架构该P2P系统方案采用分布式架构,其中每个节点都具有相同的功能和能力。
系统由以下几个核心组件构成:2.1 节点发现节点发现是P2P系统中的关键组件,它负责在网络中查找和识别其他可用的节点。
我们可以使用以下几种方式实现节点发现功能:- 中央服务器:在系统中引入一个中央服务器,所有节点都连接到该服务器,并通过服务器进行节点发现和通信。
- DHT (Distributed Hash Table):使用DHT来存储和管理节点信息,每个节点都可以查询DHT以查找其他节点。
- 多播 (Multicast):通过组播协议进行节点发现,节点可以加入一个已知的组播组,并接收到组播消息以获取其他节点信息。
2.2 数据传输在P2P系统中,节点之间需要进行数据传输以共享资源和服务。
我们可以使用以下几种方式实现数据传输:- 直接连接:节点可以直接通过建立TCP或UDP连接来进行数据传输。
这种方式能够提供较低的传输延迟和较高的传输速率。
- 中继节点:节点可以通过中继节点来进行数据传输。
中继节点作为数据的中转站,可以帮助节点之间进行数据的传递。
- 数据分发网络 (Content Delivery Network, CDN):使用CDN来进行数据传输,节点可以从离自己较近的CDN节点获取数据。
3. 功能实现为了实现具体的功能和服务,我们需要在P2P系统中实现以下几个关键功能:3.1 资源共享通过P2P系统,节点可以共享自己的资源(如文件、存储空间等)给其他节点,也可以从其他节点获取资源。
实现资源共享功能的关键是建立有效的资源管理和共享机制。
P2P多点共享传输软件的设计与实现
软件开发与设计SOFTWARE DEVELOPMENT AND DESIGNP2P多点共享传输软件的设计与实现赵专政(湖南城市学院数学与计算科学系,益阳413000)摘要:采用P2P(Peer-to-Peer)技术多点共享式文件传输,任何一个进行下载的客户,在下载的同时,也能够作为服务器把它已接收到的数据提供给另外一个客户进行下载。
这种方式可以有效地均衡上下行线路的数据量,同时每个客户端又可以部分作为服务器端,减轻了服务器的带宽压力。
本系统用Microsoft Visual C++6.0编写,实现了在局域网中若干台机器互为客户端和服务端,共同完成一个下载任务的功能。
关键词:P2P;文件共享;多点共享1功能分析随着计算机网络的普及,对文件的共享需求也越来越大,提供共享文件的下载服务也成为网络的一个主要应用之一,传统的方式是将文件放在服务器上,通过FTP方式进行下载,这种方式的主要缺点有两个:一是下载人数过多时,会导致服务器的带宽紧张,下载速度变慢;二是下载时数据是单向的,下行数据量大,上行数据量少,造成网络带宽的使用不均衡。
因为以上问题,现在提出了一种基于P2P方式的多点共享式文件传输(BT下载),任何一个进行下载的客户,在下载的同时,也可以把它已接收到的数据作为服务端,提供给另外一个客户进行下载。
这种方式可以有效地均衡上下行线路的数据量,同时每个客户端又可以部分作为服务器端,减轻了服务器的带宽压力,做到“下载的人越多,下载速度越快”。
本软件是基于P2P的多点共享式文件传输软件,它完成了寻找伙伴、上传、下载等基本功能。
可以做到若干台机器互为客户端和服务端,共同完成一个下载任务。
1.1P2P服务器端功能服务器端主要完成文件共享和资源上传的功能,详细功能需求如下:(1)提供文件共享。
(2)监听客户端的连接请求。
(3)能够根据客户端的请求发送共享文件列表或文件块。
1.2P2P客户端功能客户端主要完成搜索共享资源和多点下载功能,详细功能需求如下:(1)搜索局域网内共享资源。
基于P2P校园网文件共享的设计与实现的开题报告
基于P2P校园网文件共享的设计与实现的开题报告一、选题背景及意义随着互联网技术的发展,越来越多的人开始在校园内使用电脑进行学习和工作。
同时,校园网也越来越普及,成为了高校学子日常生活和工作中不可缺少的一部分。
在校园网中,文件共享是一个常见的需求,但是目前主要使用的是服务器-客户端的方式,存在一些问题,即传输速度慢、文件需要上传到服务器等。
因此,本设计采用P2P的方式,通过学生间的文件共享,实现快速、高效、便捷的文件传输,同时也减轻了服务器的压力。
此外,该系统还可以提供文件搜索、分享记录等功能,能够为学生们的学习成果提供保障,提高学习效率。
因此该项目的意义在于帮助提升学生的学习效率,提供一个高效的文件共享平台。
二、研究目标及内容(一)研究目标本设计旨在设计并实现一个基于P2P校园网文件共享的系统,通过学生间的文件共享,实现快速、高效、便捷的文件传输,并提供文件搜索、分享记录等功能。
(二)研究内容本设计的研究内容包括以下方面:1. P2P文件传输协议的选择与设计;2. 系统的架构设计与实现;3. 文件搜索的实现;4. 分享记录的实现。
三、可行性分析(一)技术可行性本设计采用的是P2P文件共享技术,该技术已经得到了广泛的应用,并且有很好的成熟的开源代码库可供使用,因此技术方面是可行的。
(二)经济可行性本设计所需的硬件设备和软件工具都较为普通,且大多为开源的软件工具,因此成本较低,经济可行性良好。
(三)社会可行性随着云计算和大数据技术的发展,对于文件共享和信息交流的需求也在逐渐增长,基于P2P的文件共享技术已被广泛应用于各类应用场景,因此本设计具有一定的社会可行性。
四、进度安排(一)文献综述:2019年11月-2020年1月主要研究相关领域的学术论文、文献,了解基于P2P技术的文件传输和校园网文件共享的现状,了解P2P文件传输协议的选择与设计。
(二)需求分析与系统设计:2020年1月-2020年3月对系统功能进行详细分析,包括文件共享、文件搜索、分享记录等功能,并设计系统架构以及相关模块和接口。
P2P局域网文件共享系统的研究与实现的开题报告
P2P局域网文件共享系统的研究与实现的开题报告
一、选题背景和意义:
随着互联网的发展,人们的数据存储需求越来越大,而基于云存储
的解决方案有时会面临访问速度缓慢,网络不稳定等问题,因此通过P2P 局域网文件共享系统能够更快速、更便捷地解决用户的数据存储需求。
二、研究目的:
基于P2P技术和局域网技术,研究和设计一种文件共享系统,实现
局域网内用户之间的文件共享,使用户能够快速、稳定地实现文件共享。
三、研究内容:
1、了解P2P技术和局域网技术的基本原理;
2、研究以太网、TCP/IP协议等局域网传输技术;
3、搭建P2P局域网文件共享系统的架构;
4、实现文件上传、下载、搜索、共享等基本功能;
5、采用Java语言进行编程实现;
四、研究方法:
1、文献资料法,收集相关学术材料和文献;
2、调研法,分析用户对该系统的需求和期望;
3、设计法,设计系统的架构和功能;
4、编程实现法,采用Java语言进行编程实现;
五、可能的创新点:
1、系统采用P2P技术,用户之间共享文件具有去中心化的特点,不会受到服务器单点故障的影响;
2、系统将局限于局域网内部,可实现较快速、实时的文件传输,避免由于互联网因素造成的不稳定性;
3、系统具有用户自主创建、共享、下载文件的功能,实现了用户之间信息资源的共享。
六、预期成果:
1、实现一个简单易用、功能完善的P2P局域网文件共享系统供人们使用;
2、论证该系统的可行性和优越性;
3、为未来相关研究工作提供参考和借鉴。
p2p产品设计方案
p2p产品设计方案一、引言P2P(Peer-to-Peer)是指一种分布式的计算模式,通过互联网连接多个终端设备,实现资源共享和数据传输的方式。
在这个数字化时代,P2P产品在金融、文件共享、在线娱乐等领域得到了广泛的应用。
本文将针对P2P产品进行设计方案的探讨,以提高用户体验和产品竞争力。
二、用户需求1. 安全性需求P2P产品的用户最关注的是数据的安全性。
设计方案需要考虑加密算法、用户权限管理和防范网络攻击等方面,以保护用户的隐私和交易安全。
2. 便捷性需求用户希望能够方便地使用P2P产品,进行快速的文件传输、交易或其他操作。
设计方案应考虑简化操作流程、提高传输速度以及提供友好的用户界面,以满足用户的便捷性需求。
3. 稳定性需求P2P产品需要具备良好的稳定性,能够处理大规模用户同时连接和数据传输的情况。
设计方案应考虑网络负载均衡、系统容错和错误处理等方面,以保证产品的稳定性和可靠性。
三、产品设计方案1. 安全性设计(1)加密技术:采用行业标准的加密算法,对用户的数据进行加密传输,保护用户的隐私信息。
(2)身份验证:用户在使用P2P产品时进行身份验证,防止非法用户的访问。
(3)权限管理:设计产品的权限管理模块,对用户进行不同权限的划分,限制其操作范围和数据访问权限。
(4)网络防护:使用防火墙、入侵检测系统等技术,防范网络攻击和恶意软件的入侵。
2. 便捷性设计(1)用户界面:设计直观、简洁的用户界面,提供清晰的操作提示,减少用户的操作负担。
(2)一键操作:优化操作流程,设计一键式操作,减少用户的繁琐操作,提高用户体验。
(3)快速传输:利用高速网络技术,提高文件传输速度,满足用户的快速传输需求。
3. 稳定性设计(1)负载均衡:采用负载均衡技术,合理分配用户请求和数据传输,保持系统的稳定性和高效性。
(2)容错设计:设计冗余系统和数据备份方案,防止系统单点故障导致整体系统崩溃。
(3)错误处理:设计良好的错误处理机制,及时捕捉和处理系统、网络等错误,避免影响用户的正常使用。
p2p产品设计方案
P2P产品设计方案引言P2P(Peer-to-Peer)产品是一种基于点对点网络技术的产品,它允许用户在没有中心服务器的情况下直接交换数据和资源。
在本文档中,我们将探讨一个P2P 产品的设计方案,包括产品的功能、技术实现、用户界面和未来发展方向。
产品功能我们的P2P产品旨在解决用户之间数据和资源共享的问题。
以下是产品的核心功能:1. 文件共享用户可以通过P2P产品轻松共享他们的文件。
无论是音频、视频、图片还是文档,用户都可以在P2P网络中共享和下载这些文件。
这种分布式的文件共享方式能够提供更快的下载速度和更好的稳定性。
2. 即时通讯产品还提供即时通讯功能,允许用户之间进行文本聊天和文件传输。
用户可以通过P2P网络直接发送消息和共享文件,而无需依赖中心服务器进行中转。
3. 数据加密和隐私保护为了保护用户的数据安全和隐私,我们的P2P产品将使用加密技术来加密所有的数据传输。
用户可以放心地共享文件和交换信息,而不必担心被第三方窃取或窥视。
4. 完全去中心化与传统的基于中心服务器的产品不同,我们的P2P产品是完全去中心化的。
用户之间直接交换数据,没有任何中介。
这种架构可以提高产品的稳定性,并减少单点故障的风险。
技术实现为了实现以上功能,我们将采用以下技术:1. P2P网络我们将基于P2P网络技术构建我们的产品。
P2P网络允许用户直接连接并交换数据,而不需要中心服务器。
我们将使用现有的开源P2P协议作为基础,如BitTorrent、WebRTC等。
2. 数据加密为了保护用户的数据安全,我们将使用对称和非对称加密算法来加密所有的数据传输。
用户在发送和接收文件、消息时,数据都将被加密,并且只有授权的用户才能解密。
3. 用户身份验证为了保护用户的隐私和避免恶意用户的滥用,我们将实施用户身份验证机制。
用户需要注册并登录才能使用产品的功能。
我们将使用密码哈希和身份证明技术来验证用户的身份。
4. 用户界面产品的用户界面将简洁、直观且易于使用。
c#实现P2P文件分享与传输系统
c#实现P2P文件分享与传输系统一、模型P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享。
P2P技术已经发展了很多年了,虽然理论上已经发展了很多的模型,但在实际的网络环境中(尤其是镇里这种环境),究竟怎样的网络结构才具有较好的稳定性和较高的传输性能,还是有很大的争议,每家做P2P的网络公司都会有不同的见解。
当前,P2P技术应用的主要目的还是减轻服务器工作压力,本人不才,之前曾在国内某网络软件公司里担任p2p相关的流媒体项目开发,对于P2P技术所创造的能力和带来的价值深有体会,也曾被它的复杂性所折磨的痛苦不已,不过,这也是我所珍惜的一笔宝贵的知识财富。
似乎扯远了。
赶紧回来,前段时间做了一个c#实现p2p文件传输系统的项目。
以前都是用c/c++,这还是第一次用c#来做这种项目,由于用c++比用c#要早的多,所以写c#程序不免会带些c++的习惯,不过不影响程序整体。
第一步:设计。
对于“文件分享和传输”这种典型的p2p应用,可以使用成熟的模型和框架:上面这个图里面有几个固定的端点:Peer、Tracker Server、NAT Server和Source Server,还有两个游离的元素:数据和下载节点,它们构成了一个完整的p2p网络。
在这个网络中,它们各司其职,维系着网络的运转。
•Peer 整个系统的核心所在,主要负责资源提供和资源索取,驱动着网络的运行。
也只有Peer,是唯一的一个必须存在的元素。
•Tracker Server如其名所述,动态、实时地监视着整个网络中peer节点的状态和资源分布,向下载节点提供p2p资源查询的重要功能,通过tracker server,下载节点可以迅速而准确的获取网络中拥有资源的节点列表,展开p2p下载。
•NAT Server负责NAT穿透,也形象的称为“打洞”。
对于藏在受限型NAT网络后面的节点,不通过NAT Server做穿透的话,是无法和NAT后面的节点进行通信的,而目前大部分人是没有公网IP的,NAT Server对于组建p2p网络十分的重要。
混合P2P网络下文件传输与共享系统的设计与实践
共 享丰 富 的 网络 资 源 . 并 实现 共 享 系 统 的一 种 简 单模 型 。
关 键 词 :P 2 P; P 2 P网络 模 型 :S o c k e t 编 程
0 引
言
到 自己所பைடு நூலகம்需 的资 源 。
目前 .互 联 网 已经 深 入 到 人 们 的 日常 工 作 与 生 活 中. 除 了广 义 上 的 I n t e r i l e t . 很 多 单 位 都 建 立 了 自己 的 局 域 网 。通 常 来 说 , 局 域 网是 封 闭 型 的 , 可 以 由办 公 室
1 对 等 网络 服 务
1 . 1 对 等 网 络服 务 概 述
对等网络服务 ( P e e r t 0 P e e r , P 2 P ) 在 各 种 互 联 网 应 用 中 已经 占据 主 流 位 置 P 2 P的 出现 打破 了 以前 互 联
若干 台计算机组成 . 也 可以由上千 台计算机组成 . 它们
一
网络 服务 功能 中 .文件 上传 或下 载服 务 的 比例超 过
3 7 . 4 %, 下 载 的文 件 类 型 包 括 各 种 应 用 软 件 、 音频 、 视 频
方 面 .运营 商和网络管理员发现巨大 的流量 冲击 着 自己的经济利 益受到对等网络文件共享 的影 响[ 2 1 . 但 对
文章 编 号 : 1 0 0 7 — 1 4 2 3 ( 2 0 1 3 ) 2 2 — 0 0 6 6 — 0 5
O OI : 1 0 . 3 9 6 9 / j . i s s n . 1 0 0 7 — 1 4 2 3 . 2 0 1 3 . 2 2 . 0 1 6
混合 P 2 P网络下文件传输与共享 系统 的设计与实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机网络程序设计》课程设计报告题目:P2P文件传输平台的设计与实现学院:计算机科学与工程学院专业:信息管理与信息系统学生姓名:学号:指导教师:2011年3月24日目录1.前言 (3)2.需求分析 (3)3.概要设计 (3)3.1硬件环境 (3)3.2软件环境 (3)4.详细设计 (4)5.测试 (6)6.总结 (6)参考文献 (6)附录 (7)1.前言近年来,P2P(Peer-to-Peer,对等互联或点对点技术)作为因特网通信应用中一项新兴技术,他的发展迅速。
基于P2P方式实现的软件,已经广泛应用于资源的下载、游戏的互动、交互式媒体播放、分布式计算等多种领域,并在越来越多的领域展现了巨大的应用潜力。
但是,到目前为止,仍然没有针对P2P的统一的网络应用开发标准,其体系结构仍在不断地推陈出新。
微软公司在.NET Framework 3.5中新增了.PeerToPeer命名空间,该命名空间下提供的类简化了利用P2P开发应用程序的难度,为创建P2P应用程序提供了简单的实现方法和途径。
在P2P技术尚未风行之前,很多企业级应用采用C/S 或者B/S架构。
在传统的C/S架构的应用程序中,客户端与服务器有明确的分界。
客户端软件向服务器发出请求,服务器存放共享资源并对客户端请求作出响应。
P2P的特点:相对于C/S架构来说,P2P具有以下的特点。
(1)对等模式。
P2P系统中的使用者能同时扮演客户端和服务器的角色,使两台计算机之间能不通过服务器直接进行信息分享。
(2)分布式网络数据存储结构。
P2P技术的另一个重要的特点在于“分散”。
网络中所有的计算、存储和网络连接能能力都分布在非集中式网络的“对等伙伴”上。
例如,在C/S架构中,所有客户端都是直接从服务器下载所有资源。
而P2P则改变了以服务器为中心的状态,玫瑰节点可以先从服务器上各下载一部分,然后再互相从对方或者其他节点下载其他部分。
采用这种方式,大量客户端同时下载时,不但不会形成服务器网络宽带瓶颈,造成网络堵塞,反而提高了下载速度。
当然P2P也存在一些缺点。
在许多流行的P2P应用中,都或多或少涉及隐私安全以及版权等问题。
【关键字】P2P,文件传输,.net framwork2.需求分析本系统采用基于Socket的局域网通信工具的设计与实现的方法,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快递的通信机制,它的实现无需对企业原有的局域网进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信,教学,讨论应用中有很好的实用价值。
它具有信息收发速度快,保密性好,占用网络宽带资源低,占用服务器吞吐能力低,易于编程实现等优点。
聊天系统不外乎两个方面,服务器端和客户端。
简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。
首先来看1.下服务器端的任务:服务器端应当建立一个ServerSocket,让管理者自己设置服务器端的服务端口,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
服务器作为文件下载中心。
主要是提供客户端的文件下载需要。
在服务器端管理员可以随时增加或减少提供服务的文件资源。
在服务端管理者可以查看客户端的信息。
2.客户端应该完成的工作包括:与服务器端建立通信通道,向服务器端发送请求下载文件信息。
接收来自服务器的文件流并保存所需要下载的文件。
相对服务器而言,客户端的任务就是要用户知道服务器所提供服务的下载IP和端口号。
当客户端与服务器连接成功后,在客户端,用户可以看到服务端所提供下载的文件信息。
用户可以有选择的下载所需的文件。
3.总体设计本课设主要研究的是局域网文件传输软件,此文件传输软件分为服务器程序和客户端程序,各有各自的窗体界面。
本课设的目标是能实现用户在客户端可以从服务器上下载文件资料。
主要研究内容是:熟悉C#和命名空间下的 Socket类、IPAdress 类,了解TCP/IP的协议。
在VS2008开发平台下,利用sokcet套接字编程技术,多线程开发技术,TCP协议等进行局域网文件传输软件的实际开发。
1、实现的主要思想为:在Internet上的文件传输程序一般都是以服务器提供服务端等待客户端来连接并及时作出响应,使用者通过客户端程序连接到服务器,就可以与服务器上的服务文件列表同步信息,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
2、服务器端工作流程服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目为10个,多出的客户端在服务器方不作出响应),与指定的本地服务端口绑定bind(),就可以在端口进行侦听listen()。
如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket,同时创建一个线程来控制此连接。
此时客户端就可以从服务器上进行下载所需要的文件了。
3、客户端工作流程在客户端需要建立一个Socket与服务器端连接,并提供友好界面来给用户进行操作。
当连接成功后就可以通过这个Socket来发送和接收数据了。
3.1硬件环境·处理器:AMD 5400+或更高处理器·内存:256MB或更高·网络:局域网3.2软件环境·操作系统: windows XP·开发平台:Microsoft Visual Studio 2008·开发语言:C#4.详细设计服务器端的设计:服务端主要包括8个类,:Socket类, Listen类, Receive类,PortConf类,transfer类,FileStream类,FolderBrowserDialog类,还有静态类Directory 主要用到的命名空间有:,.Socket,System.IO,System.Threading.private Socket socket;创建Socket实例,利用Socket (AdressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)方法创建一个本地套接字对象private TcpListener listener;创建监听实例并绑定开放服务端口,用listener.Start()开始进行服务器监听,同时创建一个线程来进行控制。
FolderBrowserDialog fbd = new FolderBrowserDialog();打开服务器端所要服务的文件目录。
for (int i = 0; i < Directory.GetFiles(dir).Length; i++){str[i] = Directory.GetFiles(dir)[i];richTextBox1.AppendText(str[i] + "\r\n");}用for循环来读取打开文件目录下的所有文件名,以方便客户端进行下载。
sock = listener.AcceptSocket()接收客户发来的连接信息。
当客户端与服务器建立好连接后用filestream=new FileStream()创建发送文件流。
客户端主要包括:TcpClient类,NetworkStream类,FileStream类,IPAddress类主要用到的命名空间有:,.Socket,System.IO,System.Threading.主要方法有:download()进行文件下载。
if(saveFileDialog1.ShowDialog()==DialogResult.OK){ //构造新的文件流filestream=newFileStream(saveFileDialog1.FileName,FileMode.OpenOrCreate,FileAccess.Write) ;//获取服务器网络流netStream=client.GetStream();string down=comboBox1.Text+"\r\n";byte[]by=System.Text.Encoding.BigEndianUnicode.GetBytes(down.ToCharArray());//向服务器发送要下载的文件名netStream.Write(by,0,by.Length);//刷新流netStream.Flush();//启动接收文件的线程thread2=new Thread(new ThreadStart(download));thread2.Start();}//对应if(saveFileDialog1.ShowDialog()==DialogResult.OK)图形界面编程:利用TCP 的socket 或者UDP 编写,客户端和服务器端程序可以进行多次对话。
服务器功能划分为以下模块和客户端功能划分为以下模块如下:5. 测试运行效果截图如下:6.总结这次程序设计也是一个毅力的考验过程。
有时候往往只是一个小小的错误,却要花出几小时甚至是一两天的时间才可能发现它。
所以在这个过程不能过于急躁,要很有耐心将程序反复调试。
通过这次课程设计,对我们的逻辑思维能力是一个很大的锻炼,它不仅加强了我们的系统思考问题的能力,而且还改变了我们以前不好的编程习惯,虽然花费了不少的时间,但是我学到了丰富的知识。
附录:监听代码:private void button1_Click(object sender, System.EventArgs e){if (richTextBox1.Text == ""&&textBox1.Text==""){MessageBox.Show("請輸入服務器監聽端口");return;}else{try{if (textBox1.Text != ""&&richTextBox1.Text!=""){port = Int32.Parse(textBox1.Text);if (port > 65535 || port < 1){MessageBox.Show("請輸入小於的正整數");textBox1.Text = "";return;}}else{MessageBox.Show("請設置服務器文件目錄");return;}}catch (Exception ee){MessageBox.Show("您輸入的格式不對!" + ee.ToString()); textBox1.Text = "";return;}}try{listener = new TcpListener(port);//ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//ServerAddress = new IPEndPoint(IPAddress.Any, port);//ServerSocket.Bind(ServerAddress);//ServerSocket.Listen(10);listener.Start();statusBarPanel1.Text="服務器正在監聽......";button1.Enabled = false;//button4.Enabled = false;button5.Enabled = false;thread=new Thread(new ThreadStart(recieve));thread.Start();CheckForIllegalCrossThreadCalls = false;}catch(Exception ee){MessageBox.Show(ee.Message);}}连接代码:int port=0;IPAddress myIP=IPAddress.Parse("127.0.0.1");try{if (textBox2.Text != "")myIP = IPAddress.Parse(textBox2.Text);elsereturn;}catch{MessageBox.Show("請輸入正確的IP地址格式!例如:.168.1.1"); }client =new TcpClient();try{if(textBox3.Text!=""){port=Int32.Parse(textBox3.Text);if (port<1||port>65535){MessageBox.Show("請輸入小於的正整數");textBox1.Text = "";return;}}}catch{MessageBox.Show("請輸入服務器監聽端口");return;}参考文献[1]胡希仁.计算机网络.[2]马俊C# 网络应用编程(第二版)。