JAVA P2P JXTA 学习体会与入门

本文介绍了JXTA这一P2P平台的关键概念,包括对等体、对等组、通告、管道等,并详细解释了单向及双向管道的工作原理。此外还探讨了点组服务DiscoveryService的作用及使用方法。
 JXTA是一个基于P2P的开发平台,他有多种语言的实现版本,目前我学习的是JAVA实现版本,目前我了解的也是少数,希望能给初学者带来一点好处。(我学了多少就介绍多少,没学过的就不照书抄了)
  JXTA的中的关键概念有以下几点
  。对等体(Peer,P2P中的一个点,每个对等体必须有一个PeerID,而PeerID可以由IDFactory的一些方法生成) 
  。对等组(PeerGroup,用于维护一系列的Peer)       
  。通告 (用以描述各个组件)
    包括服务通告,管道通告,点通告,点组通告。可以根据其名看出,服务通告描述服务,管道通告描述管道以此类推。在JXTA中分别对应着 ModuleClassAdvertisement,ModuleSpecAdvertisement,ModuleImplAdvertisment(服务通告),PipeAdvertisemnt(管道通告),PeerAdvertisment(点通告),PeerGroupAdvertisement(点组通告)
  。管道 (用以连接两个对等体,与Unix中的管道类似)
    单向管道---InputPipe,OutputPipe,一个对等点发布一个管道通告(要想连接这个对等体就必须得到这个管道通告),然后建立输入管道(这样才能有个入口用于输出管道的建立),然后一个点通过DiscoveryService来发现本地(local)或者远程的(remote)的管道通告,然后建立输出管道(利用这个通告),这样就可以进行Peer间的通信了。不过既然是单向管道,就只能由OutputPipe发送信息,InputPipe接受信息。InputPipe的waitForMessage是一个阻塞式的方法,当然如果建立输入管道时候,传进一个实现PipeMsgListener接口的对象,就可以实现异步的监听了。
     双向管道---JxtaServerPipe , JxtaBiDiPipe,JxtaServerPipe有一个accpet方法用于等待JxtaBiDiPipe的连接,同时JxtaBiDiPipe提供了发送和接收Message的方法。
    基于Socket编程的管道,JxtaServerSocket, JxtaSocket这和Socket编程非常的类似,可以参考Socket编程方法,
  。点组服务,DiscoveryService,用于发现,点、管道、点组通告。提供本地(getLocalAdvertisement)和远程(getRemoteAdvertisment)的方法。在远程方法中,如果不加监听者(DiscoveryListener),则将搜索到的通告放入本地缓存中,如果加了监听,就将管道封装成一个DiscoveryEvent,然后由程序员进行处理。
先介绍到这里。深入的知识我会继续努力学习的...



有一些问题,在这里作为补充吧,是我做东西的时候遇见的一个问题。就是利用StructureDocument进行对象传递时,对象除了需要实现序列化接口以外(用序列化版本id控制类相同),还需要实现Element接口  
利用StructureDocument的createElement(name : Object, value :Element)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值