P2P SDK开发包与无关性协议传输

上传人:zejun11****63.com 文档编号:118776697 上传时间:2019-12-25 格式:DOC 页数:67 大小:185KB
返回 下载 相关 举报
P2P SDK开发包与无关性协议传输_第1页
第1页 / 共67页
P2P SDK开发包与无关性协议传输_第2页
第2页 / 共67页
P2P SDK开发包与无关性协议传输_第3页
第3页 / 共67页
P2P SDK开发包与无关性协议传输_第4页
第4页 / 共67页
P2P SDK开发包与无关性协议传输_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《P2P SDK开发包与无关性协议传输》由会员分享,可在线阅读,更多相关《P2P SDK开发包与无关性协议传输(67页珍藏版)》请在金锄头文库上搜索。

1、P2P SDK开发包与无关性协议传输目录:一综述二PPQ.DLL是一个P2P SDK开发包三PPQ.DLL的特点四PPQ.DLL的工作方式五创建PBaseAct派生类六在开始一个任务之前的准备工作七从URL下载一个文件八建立一个语音聊天九从另一个好友处下载一个文件十PPQ.DLL的无关性协义传输一综述 PPQ.DLL通过对象和插件的封装来实现无关性协义传输,允许开发者在不必知道传输协议的前提下,就可以进行插件的开发,加快开发过程,减少错误的产生,提供了一种用TCP来实现事务处理的策略,在最后提出了一种比HTTP、XML和SOAP等更加灵活的包含执行方法的,以传送对象的方式实现的无关性协义传输。

2、 二PPQ.DLL是一个P2P SDK开发包PPQ.DLL是一个P2P的SDK开发包,它使用对象的传递来实现无关性协议传输,这种对象并不是MFC或JAVA的序列化对象,PPQ.DLL的序列化对象,使开发者可以在互相不知道传送协议的情况下,互传消息,并且可以根据开发者的定义,在不同的编程语言环境中互传对象。它将TCP的流式数据转变成一个个事务来对待,每一个事务表明你希望通过P2P来实现的功能,事务的处理过程可以使用DLL、OCX或COM等任何一种形式封装起来,这些被封装的事务可以由其它开发者直接在自己的开发程序中引用,而不需要再为处理相同的事务去开发一套程序。 PPQ.DLL采用插件的形式来引用

3、已定义好的事务处理程序,不但可以在开发程序时增加一个插件,而且允许程序在运行时动态增加或取消一个插件,使开发出来的程序,具备动态扩展功能,而不必每增加一个功能都重新发布一次程序,并且这种插件地增加和取消可以完全由用户自己来决定。PPQ.DLL封装了数据传输时的编码方式,使开发者不用担心开发程序与未来P2P国际标准之间的接轨,对于新的标准的适应,只需要简单的修改一下底层的解码器,所有原先的开发程序就可以自动地适应新的国际标准。PPQ.DLL实际上提供了一种新的以对象方式实现的无关性协议传输,它类似于XML、HTTP、SOAP等协义,但有其独特的特点,关于这种新的无关性协议传输的可行性将在后面论述

4、。 PPQ.DLL为P2P的应用带来了一个新的起点。现在的P2P的应用都是传递一种字符串来作为命令,它只能传递规则,而无法传递规则所表示的方法,并且这种规则到目前为止并没有一个统一的标准,如何建立标准与什么时候能够建立标准都是一个期待的问题。在等待标准公布时,每一家大的公司都在努力制定自己的协义与标准,都希望将来的标准能够与自己的相同,在标准公布以后,所有的与标准不同的程序,如果想适应标准,都必需去修改原程序,这个改动是很庞大的,而PPQ.DLL正是解决了这个问题。PPQ.DLL的传输没有任何的协议,任何一个开发者都可以制定自己的协议标准去完成一个任务,而不需要去关心其它的应用程序。对于想通过

5、P2P来实现的功能,只需要加入一个已经定义好的类就可以啦,如果想在其它开发者开发的事务处理程序基础之上去增加一些功能,甚至可以从其他开发者已经定义好的类中派生出新的本地类来实现自己的独特功能,而发送指令对象的双方却都可以正确地解析,并且可以在双方的处理过程中,都引入自己独特的本地处理方式。PPQ.DLL是一种真正地无协义传输方式,它的引入可以使P2P在一些关键性领域中得到真正地应用,它的这种插件式自由组合方式,也使程序地开发得到了最大化的复用,能够更好地加快程序开发速度,使每一次的开发都不必再从起跑线上开始。利用PPQ.DLL的对象传递方式,PPQ.DLL将P2P实现的基本功能都封装在了DLL

6、中,开发者可以直接把它作为一个开发包来使用,其他开发者利用PPQ.DLL的对象传递方式开发出的插件,也可以直接无缝地加入开发包中,使开发P2P产品变得轻松自如。PPQ.DLL也提出了防止目前P2P上盗版、黄色信息、无用的垃圾信息大量泛滥的一种方法,让P2P的使用更加规范,使个人用户的行为更加具有针对性和目的性。从开发JAVA版的P2P程序开始,我就始终认为P2P应该对下载的文件设定一种权限,用户通过权限可以控制自己所提供的文件可以被哪一些人下载,这种想法也影响到了我开发C+版的PPQ.DLL。国内目前开发的P2P程序中对下载文件都没有任何的限制,其直接导制的后果就是大量的黄色信息呈辅射状传播,

7、一个下载了黄色信息的用户无形之中成为了一个传播黄色信息的新的源,形成了非常坏的一个恶性循环,最终导制目前国内所有P2P网站全部暂停。PPQ.DLL对用户的所有传送文件采用数字标识来传递,这种数字标识可以和一些描述性的词汇一起被传送给其它用户,用户想下载时,也是传递数字标识,而并不是直接传递想下载的文件名,传送方在接收到数字标识后通过程序去查找到该数字标识所对应的正确的本地文件名,在这个过程中,传送方可以检验请求传送的用户是否有权限下载该文件,如果有,则开始传递文件,否则会驳回该用户的请求。数字标识的引入为安全性和扩展性带来了很多的好处:1用户不必再设定某一个共享目录,文件可以散布在本地机器的任

8、何一个目录下,而不用担心安全性。2避免了垃圾文件的出现,设定共享目录时,用户常常将一大堆文件拷贝到目录下,结果检索出来的经常是一大堆垃圾。3可以为任何一个文件加入权限设定,使用户可以灵活得控制每一个文件的一个或一组下载方。4每一下载方只能看到自己可以下载的内容,不在权限内的下载内容根本就看不到。5为将来的应用增加了可扩展性,从数字标识到正确的本地文件的转换过程,提供了一种方便地扩展手段,以什么方式来设定权限、如何校验权限、是否使用权限、以及对不同文件采取不同加密手段等都可以在这个转换过程中根据具体情况来定义。 通过以上方法,只能防止文件的泛滥传播,还不能有效地控制黄色信息。从用户端来控制黄色信

9、息是很困难的,因为写的任何一个过滤代码都很容易就会被破解,从而根本起不到过滤黄色信息的目的,所以最终还是应该从服务器来控制。PPQ.DLL的想法是将用户提供的公共信息源采用分布式数据库的方式保存,由专门的服务器提供一个强大的搜索引擎,用户通过这个搜索引擎来检索公共信息,在这个搜索引擎中设置过滤器,滤除黄色信息,这是避免黄色信息泛滥传播的一个有效方法。(用户在几个人的小范围内进行的传播,应该不在考虑范围之内,而且也根本就不可能完全地控制住。)PPQ.DLL在服务器开发方面,提出了一种“全球服务器统一资源分配”策略,这种方式,对服务器的负担非常轻,可以由任意多个服务器提供商去独立地创建自己的用户群

10、,建立自己的用户档案库,彼此间不需要频繁交换信息,也不需要彼此共享用户资源,更用不着建立中心数据库,但是在任何一台服务器上登录的用户彼此间却可以互相通讯,可以不通过服务器而建立连接。 三PPQ.DLL的特点1在P2P标准尚未统一的情况下,开发者都在独立的制定自己的传送协议,使开发出来的程序彼此无法互相通讯,而且采用不同编程语言开发出的产品,在互相通信时也会存在问题,PPQ.DLL正是为解决这个问题而开发的。PPQ.DLL是建立在任何一种标准协议之上的一种公共接口,它不但能简化开发过程,而且标准化了传送和接收的过程,使开发者可以在各自制定协议的前提下,仍然能够实现互相通讯,并且可以在采用不同的编

11、程语言开发的产品之间互相传递指令对象。2PPQ.DLL封装了采用TCP进行文件传送与接收的全过程。只需要给出连接方的IP地址、监听端口号和想传送(或下载)的文件的数字标识号,PPQ.DLL会自动地以多线程、断点续传的方式实现文件的传送与接收过程。3PPQ.DLL封装了以HTTP方式从URL地址下载文件的全过程。只需要给出想下载的URL地址,PPQ.DLL会自动地根据服务器端是否支持断点续传,来决定采用单线程还是多线程方式下载。支持重定向。4PPQ.DLL封装了以TCP方式进行语音聊天的全过程,只需简单地调用几个静态函数,就可以轻易地启动、暂停、关闭声音捕捉(录音)和声音回放(放音),并初步实现

12、了静音过滤。5PPQ.DLL封装了进行数据传输的编码方式和传送的具体过程,将数据的传送和接收转变成对象的传送和接收,使处理过程标准化。使用PPQ.DLL来开发程序,不用直接和字符串打交道,不必再去解析从SOCKET接收到的字符串编码,开发者可以将想传送的信息定义成指令对象的属性,直接发送指令对象,PPQ.DLL会自动将指令对象转变成数据流发出。SOCKET所接收到的数据,PPQ.DLL会自动转变成对应的指令对象,以WINDOWS消息或回调函数的方式通知接收方,使整个的开发过程变得更加简单和模块化。6PPQ.DLL的对象数据流处理并不是MFC的序列化对象,它比MFC的序列化对象更加简单、易用,允

13、许在修改对象属性后,重复发送对象,而且能够在无法实别所传送的类对象时,自动还原成与该类最接近的一个基类的对象。PPQ.DLL的序列化解码过程采用纯C+编写,可以很容易地改写成其它的语言。7PPQ.DLL的对象流的实现过程和方法被完全地封装在了DLL中,对于实现对象流的算法的优化,甚至是改变对象流的传送格式,都不会对使用PPQ.DLL的开发者造成任何影响,使开发者可以完全放心地开发程序,而不用担心标准与协议的改变。经过数次的改写和优化,正式版的PPQ.DLL不但可以传送任意大小的指令对象,并且在接收指令对象时,从SOCKET中读出的数据将直接被写到指令对象相应的属性的缓冲区中,中间不再需要经过任

14、何一次缓冲区的复制过程,大大地加快了速度。8如果你认为使用PPQ.DLL开发的不同产品,只不过是界面上的不同,那你就错啦。PPQ.DLL提供了丰富的接口和灵活的开发方式,使你完全可以开发出具有鲜明特点和独立功能的程序。PPQ.DLL只是封装了连接实现的过程和握手协议,对建立连接后,双方传送的信息并没有作出任何规定和假设,它只是提供了一种公共的接口。9开发者可以根据自己的需要去创建新的类,来表明一种类型的指令,这种类型的指令完成一种特定的功能,开发者可以将自己创建的指令和指令的解析程序一起打包成一个DLL,发布出来,同时公布该类的ClassID。其它的开发者可以在自己的程序中直接引用这个DLL,

15、来完成由其它开发者预先定义好的功能。PPQ.DLL内部也定义了一些派生类,这些派生类都是完成一种特定功能的指令对象。10PPQ.DLL提供了一个钩子函数,用来返回开发者自定义的类的对象。如果你的自定义类是你发布的DLL中的一个内部类,即自定义的类被完全地封装在了你提供的DLL中,那么这个类的类名可以是任意的,不用担心会重名。当其他开发者要使用你的DLL时,只需要增加你提供的钩子函数即可。但是类的ClassID还是需要公布的,以避免与其他开发者的ClassID重复。握手协议的传递和语音聊天的传送与接收采用的就是指令对象的方式来进行传送,这些对象都被封装在了PPQ.DLL内部,开发者只需要通过接口来启动一个或一组功能,而不需要直接去同这些对象打交道。因为这些类被完全地封装在了PPQ.DLL内部,因此,即使你在开发过程中定义了一个与这些对象重名的类,也不会对程序造成任何的影响。 四 PPQ.DLL的工作方式PPQ.DLL通过消息与回调函数和DLL外部进行交互,要想正确地使用这个DLL,就需要了解PPQ.DLL中对外发布的几个类。PPQ.DLL中一共对外提供了5个类:PDefine、PFriend、PBaseAct、PTask和CStringEx。 PDefine类中定义了开发者需要使用的结构、回调函数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号