基于P2P技术局域网文件共享系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、技术路线
系 统 运 行 架 构 图
三、技术路线
(1)在初始化阶段调用 )在初始化阶段调用WSAStartup() () 此函数在应用程序中初始化Windows Sockets DLL , 只有此函数调用成功后,应用程序才可以再调用其他 Windows Sockets DLL中的API函数。在程序中调用该函 数的形式如下:
WSAStartup((WORD)((1<<8|1),(LPWSADATA) &WSAData),其中(1<<8|1)表示我们用的是WinSocket1.1版本, WSAData用来存储系统传回的关于WinSocket的资料。
三、技术路线
(2)建立 )建立Socket 初始化WinSock的动态连接库后,需要在该用户端建 立一个监听的Socket,为此可以调用Socket()函数来建 立这个监听的Socket,并定义此Socket所使用的通信协议。 此函数调用成功返回Socket对象。失败则返回 INVALID_SOCKET(调用WSAGetLastError()可得知 原因,所有WinSocket 的函数都可以使用这个函数来获取 失败的原因)。
基于局域网的文件共享传输系统的开发与设计选用VC++ 基于局域网的文件共享传输系统的开发与设计选用 6.0为开发工具,通过在各用户端建立 为开发工具, 为开发工具 通过在各用户端建立Socket连接后实现 连接后实现 局域网快速、准确、安全的大容量文件共享传输功能。 局域网快速、准确、安全的大容量文件共享传输功能。本 系统能够促进局域网内用户之间的文件资源共享, 系统能够促进局域网内用户之间的文件资源共享,满足主 机之间信息交流,确保文件及文件夹传输的速度和安全性, 机之间信息交流,确保文件及文件夹传输的速度和安全性, 有效地提高工作效率。 有效地提高工作效率。
选择存放路径
四、运行效果
文件传输中
四、运行效果
文件传输完成!
通过本次的项目实践,我们学习并加深了 通过本次的项目实践,我们学习并加深了windows 网络编程的相关知识技能,而且充分感受到了P2P思 网络编程的相关知识技能,而且充分感受到了 思 想的魅力。在项目实践过程中从调研、定题、 想的魅力。在项目实践过程中从调研、定题、设计到 实现、调试, 实现、调试,是一个小组成员以及指导老师之间一个 不断的思维碰撞、交流沟通的过程, 不断的思维碰撞、交流沟通的过程,由是也锻炼了我 们在实际项目开发中的团队沟通协作能力, 们在实际项目开发中的团队沟通协作能力,实在是获 益匪浅。 益匪浅。
由此, 由此,基于局域网的文件传输系统能够让家庭网络以及各个企 业等局域网对内部资料有一个快捷,准确,安全的共享 安全的共享。 业等局域网对内部资料有一个快捷,准确 安全的共享。特别是 对如今较大系统研发的模块分工合作得到了绝对保密性, 对如今较大系统研发的模块分工合作得到了绝对保密性,从而 使各项工作有计划、更科学的进行及顺利完成,使企业的办事 使各项工作有计划、更科学的进行及顺利完成, 效率得到显著提高。 效率得到显著提高。
二、项目概况
基于P2P思想实现的局域网文件共享传输系统与传统服务器/客户端文件传输系统对比
系统中, 在P2P系统中,每个用户端既可以担当客户端角色亦可以担当 系统中 服务器端角色,完全视使用情况而定, 服务器端角色,完全视使用情况而定,故而不必将客户端与服 务器端软件分开设计,统一设计用户端。 务器端软件分开设计,统一设计用户端。
三、技术路线
(4)监听 ) 用户端的Socket调用完listen()后,如果此时其他 用户端调用connect()函数提出连接申请的话,本用户端 必须再调用accept() 函数,这样本用户端和其他用户户 端才算正式完成通信程序的连接动作。为了知道什么时候 其他用户端提出连接要求,从而本用户端的Socket在恰当 的时候调用accept()函数完成连接的建立,我们就要使 用WSAAsyncSelect()函数,让系统主动来通知我们有其 他用户端提出连接请求了。该函数调用成功返回0,否则 返回SOCKET_ERROR。
三、技术路线
(4)监听 ) 当用户端的Socket对象绑定完成之后,必须建立一 个监听的队列来接收其他用户端的连接请求。listen()函 数使服务器端的Socket 进入监听状态,并设定可以建立的 最大连接数(目前最大值限制为 5,最小值为1)。该函 数调用成功返回0,否则返回SOCKET_ERROR。 int PASCAL FAR listen( SOCKET s, int backlog );
在这个信息化时代, 在这个信息化时代,计算机网络技术的迅猛发展影响了 几乎包括政治、文化、生活、经济在内的每一个角落, 几乎包括政治、文化、生活、经济在内的每一个角落, 推动了人类社会向信息化社会的逐步转变; 推动了人类社会向信息化社会的逐步转变;同时我们也 应该清醒地认识到文件传输的问题是计算机网络发展过 程中的一个不容忽视的问题。在如今拥塞的网络上, 程中的一个不容忽视的问题。在如今拥塞的网络上,各 种数据在争夺着网络资源, 种数据在争夺着网络资源,如何使传输的文件更加可靠 的到达目的地, 的到达目的地,同时如何友好的解决文件分类分组高效 传输等问题都是需要有待提高和完善的地方。 传输等问题都是需要有待提高和完善的地方。
三、技术路线
(3)绑定端口 ) 接下来要为用户端的这个监听的Socket指定一个地 址及端口(Port),这样其他用户端才知道待会要连接哪 一个地址的哪个端口,为此我们要调用bind()函数,该 函数调用成功返回0,否则返回SOCKET_ERROR。 int PASCAL FAR bind( SOCKET s, const struct sockaddr FAR *name,int namelen ); 参 数: s:Socket对象名; name:Socket的地址值,这个地址必须是执行这个程式 所在机器的IP地址; namelen:name的长度; 如果使用者不在意地址或端口的值,那么可以设定地址为 INADDR_ANY,及Port为0,Windows Sockets 会自动将 其设定适当之地址及Port (1024 到 5000之间的值)。此 后可以调用getsockname()函数来获知其被设定的值。
三、技术路线
SOCKET PASCAL FAR Socket( int af, int type, int protocol ); 参数::af:目前只提供 PF_INET(AF_INET); type:Socket 的类型 (SOCK_STREAM、 SOCK_DGRAM SOCK_DGRAM); protocol:通讯协定(如果使用者不指定则设为0); 如果要建立的是遵从TCP/IP协议的Socket,第二个参数 type应为SOCK_STREAM,如为UDP(数据报)的 Socket,应为SOCK_DGRAM。因此本设计中type应为 SOCK_STREAM。
三、技术路线
(5)接受其他用户端的连接请求 ) 当他人提出连接请求时,本用户端hwnd视窗会收到 Winsock Stack送来我们自定义的一个消息,这时,我们可 以分析lParam,然后调用相关的函数来处理此事件。为了 接受其他用户端的连接请求,就要使用accept() 函数, 该函数新建一Socket与本用户端的Socket相通,原先监听 之Socket继续进入监听状态,等待他人的连接要求。该函 数调用成功返回一个新产生的Socket对象,否则返回 INVALID_SOCKET。
二、项目概况
局域网文件共享传输 系统主要功能是自动 获取局域网内各用户 的主机名、 地址以及 的主机名、IP地址以及 工作组名字, 工作组名字,并最终 以P2P模式通过 模式通过 TCP/IP协议实现点到 协议实现点到 点文件传输功能。 点文件传输功能。
三、技术路线
本软件采用面向连接的流式套接字,基于 思想实现, 本软件采用面向连接的流式套接字 基于P2P思想实现,因 基于 思想实现 而客户端和服务器端软件不进行分开设计。程序工作时, 而客户端和服务器端软件不进行分开设计。程序工作时 首先由程序建立套接字连接,在连接的基础上 在连接的基础上,由重载的 首先由程序建立套接字连接 在连接的基础上 由重载的 Socket事件通知函数启动相应的任务。为了提高程序的 事件通知函数启动相应的任务。 事件通知函数启动相应的任务 反应速度,程序的文件上传和文件下载任务由辅助线程启 反应速度 程序的文件上传和文件下载任务由辅助线程启 动。程序的调用时序图如下
传统方式下,利用 传统方式下,利用FTP协 协 议进行文件传输最为普遍, 议进行文件传输最为普遍, 这种方式的优点是适用面 使用简单、 广、使用简单、不需要用 户编制额外的应用软件 (一般集成在操作系统或 者网络协议中); );其缺点 者网络协议中);其缺点 是在广域网上传输大文件 时可靠性较低、 时可靠性较低、不支持断 点续传, 点续传,因而对大文件和 传输精度要求很高的应用 不适合。 不适合。
SOCKET PASCAL FAR accept( SCOKET s, struct sockaddr FAR *addr,int FAR *addrlen ); 参数:s:Socket的识别码; addr:存放来连接的其他用户端的地址; addrlen:addr的长度。
三、技术路线
(6)结束 Socket 连接 ) 结束两个用户端之间的通信连接是很简单的,这一 过程可以由两端的任一端启动,只要调用closeSocket() 就可以了,而要关闭Server端监听状态的Socket,同样也是 利用此函数。另外,与程序启动时调用WSAStartup()函 数相对应,程序结束前,需要调用 WSACleanup() 来通 知Winsock Stack释放Socket所占用的资源。这两个函数都 是调用成功返回0,否则返回SOCKET_ERROR。
int PASCAL FAR closeSocket( SOCKET s ); 参 数:s:Socket 的识别码; int PASCAL FAR WSACleanup( void ); 参 数: 无
四、运行效果
界面截图
四、运行效果
有用户发出文件共享传输请求,本术局域网文件共享系统 技术局域网文件共享系统 基于
By 孙文霞
小组成员: 小组成员:
孙文霞(队长 试验092 孙文霞(队长) from 试验 试验092 韩孟 from 试验 试验092 曹津 from 试验
指导老师: 指导老师:
高万林
教授
一、项目背景
很多情况下,我们的日常工作需要借助文件传输来完成。 很多情况下,我们的日常工作需要借助文件传输来完成。但大 多数文件传输功能都需要借助移动磁盘等硬件设备或Internet 多数文件传输功能都需要借助移动磁盘等硬件设备或 上的服务器才能实现。 上的服务器才能实现。这就给那些具有大规模内部网络的用户 造成了许多问题,如浪费资金、浪费网络资源、病毒入侵、 造成了许多问题,如浪费资金、浪费网络资源、病毒入侵、降 低了工作效率等。 低了工作效率等。借助于网络进行信息资源交流给人们带来了 极大的方便。各种文件传输系统都已被广大用户接受。 极大的方便。各种文件传输系统都已被广大用户接受。比如 QQ、UC、Internet邮件等互联网中运用最为广泛的文件传输 、 、 邮件等互联网中运用最为广泛的文件传输 工具, 工具,但它们之间的文件传输往往对远程服务器有非常大的依 赖性,没有彻底实现点对点安全的文件传输。 赖性,没有彻底实现点对点安全的文件传输。甚至需要花费大 量的金钱购买各种移动磁盘或者其他局域网内连接主机的硬件 设备。 设备。而达到的效果却总是因为传输效率以及安全威胁而受到 很大的限制。在这种形势下,开发一个功能简单而实用, 很大的限制。在这种形势下,开发一个功能简单而实用,能在 Windows操作系统中运行,并且具有可移植性的局域网内文 操作系统中运行, 操作系统中运行 件传输工具势在必行。 件传输工具势在必行。