基于P2P的局域网多线程共享软件设计.docVIP

基于P2P的局域网多线程共享软件设计.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于P2P的局域网多线程共享软件设计

基于P2P的局域网多线程共享软件设计   1 系统概述   本系统的主要功能其一,局域网下的文件P2P共享,这里包括文件的传输和文件列表的传输;其二,局域网下用户的P2P心跳检测。系统的特点是多线程多任务同步。   2 设计思想   下面将从两个大模块来介绍设计思路,首先是文件的收发,然后是文件列表的收发和心跳模块,如图1所示。   2.1 文件收发模块   文件的收发是resource-shaie最基本的功能,也是最核心的功能。   2.1.1 有关文件收发的Socket的分类   因为这里采用的是TCP协议,所以在程序中,大体上存在于3组Socket,与文件收发有关,一组Socket是welcomesocket,用于监听连接的到来,并Accept;另一组Socket,是数据传输的Socket,来自于welcomesocket的accept(),用于send文件数据给对等方,姑且称作sendsocket;最后一组Socket也是数据传输的socket,通过connect()对等方的welshy;comesocket得到,与上面那个sendsocket是直接相连的,只是因为所面对的对象不同,对于当前对等方,因为这个Socket的用于recover文件,姑且称作recvsocket。   可以这样理解,对于一个对等方来说,sendsocket就只send(),recvsocket就只recover ()。之所以这样分开,是为了方便管理,降低耦合度,使得两个对等方之间的所直接相连的一对sendsocket和recvsocket在一个文件任务中维系关系,也就是说,一对socket,在同一时间只共同执行一个任务,一边是发和一边是收。然而,如果全在一个Socket中send和recv,就会变得很乱,一个socket就可能牵连多个任务,一个socket出了问题,可能几个任务的收发都会失败。   下面举一个例子来具体说明为什么要这样分类。   假使现在有两个人,hana和alice。考虑hana从alice下载一个文件的情况,在不考虑上传操作的时候,hana是主动的,alice是下载方,所以首先hana会connectalice的welcomesocket,而对于alice而言,她的welcomesocket一直在等待hana的接入,hana-旦发起连接她就会accept。接着,hana通过connect得到的socket就是所谓的recvsocket,而这个socket相对于alice,就是alice的sendsocket,她将从这个socket里接收数据,但是目前还不行,因为alice并不知道hana的要求是什么,所以这里需要向alice发送一个请求,同样是通过recvsocket。对于alice而言,假使已经从welcome socket accept到了一个sendsocket,那么首先要获取请求,她需要先对sendsocket执行一次recv请求的操作。   到这里,请求完成了,接下来,hana的recvsocket就不断接收文件数据,alice的sendsocket不断发送文件数据。反过来,假使alice想从hana那里下载东西,因为二人都有上述3组Socket,所以很容易实现。实际上,想实现上传功能也可以用完全一样的逻辑体系,只需要从后者发送一个特殊指令,使得前者发送一个下载请求给后者即可,如图2所示。   2.1.2 文件请求的监听和连接   上面讨论的是纯粹的传输一个文件的情况,下面内容逐渐复杂。   还是上面的例子,假设现在需要支持多任务的模式,也就是说,alice不仅仅要向hana-个人发送一个文件,而是将会向很多人发送文件,并且对于每个人,还不只是一个文件。   那么,alice可以开多个welcomesocket去listen,每一个welcomesocket监听n个用户,接着通过accept返回每一个文件的sendsocket,这样一来,就等于说和每一个终端都建立起了多个传送通道,每个传送通道传送一个文件,也就是一个任务。   现在问题是到底需要几个这样的welcomesocket?当然,可以只开一个welcome,全靠一个welcomesocket监听(用户数量)*(每个用户的文件请求数量)数量的请求。但在实际设计中,使用了多个端口创建了多个welcomesocket,让每一个welcomesocket对于每一个访问他的终端而言,在单个任务执行的过程中,只能有一个文件的请求。这样一来,每一个welcomesocket的最大并发连接数就一定是用户的总数量,而welcomes

文档评论(0)

专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!

1亿VIP精品文档

相关文档