- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 招投标合规指引之招标常见问题(第一期).pdf VIP
- 2025版建筑行业临时用工合同范本(2025版).docx
- 痛风性关节炎-课件.ppt VIP
- 人教版二年级上册数学全册教学设计(配2025年秋新版教材).docx
- 2024年《高等教育心理学》教师岗前培训考试复习题库(含答案).docx VIP
- 四川省成都市双流区2024年小升初语文试卷 附解析.doc VIP
- Module4Unit1Willyoutakeyourkite?(教学设计)-英语四年级下册.docx
- 新闻编辑学 (第四版).pptx VIP
- 四川省成都市双流区2024年小升初语文试卷 附解析 .pdf VIP
- (人教2019版)化学必修第一册 全册大单元教学设计.docx
- 软件下载与安装、电脑疑难问题解决、office软件处理 + 关注
-
实名认证服务提供商
专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!
文档评论(0)