jxta p2p编程技术例程四

jxta p2p编程技术例程四

ID:15718906

大小:42.50 KB

页数:4页

时间:2018-08-05

jxta p2p编程技术例程四_第1页
jxta p2p编程技术例程四_第2页
jxta p2p编程技术例程四_第3页
jxta p2p编程技术例程四_第4页
资源描述:

《jxta p2p编程技术例程四》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JXTA,P2P编程技术例程(4)作者:yxiong2000

2、日期:2004-07-30

3、字体:大中小广告处理在我们建立了发现监听器之后,它将不停的加入一些新发现的module说明通告到我们的本地缓冲中。每次processPrimes()方法被调用的时候,客户peer将尝试连接module说明通告代表的peer,接入到他们的输入通道中,传递一个消息去初始化这个peer的质数发现服务。)这个方法的第一个元素就是决定我们能够委托以工作的peer集合,应该记得一个通告有一个期限限制,因此我们要消除那些不在有效的通告。Publici

4、nt[]processPrimes(intlow,inthigh){SetsetCopy=null;synchronized(adverts){SetsetCopy=(Set)adverts.clone();}ArrayListworkingList=newArrayList();ArrayListexpired=newArrayList();longcurrentTime=System.getCurrentTimeMillis();Iteratorit=workingSet.iterator();while(it.hasN

5、ext()){ModuleSpecAdvertisementad=(ModuleSpecAdvertisement)it.next();if(ad.getLocalExpirationTime()>currentTime+(2*60*1000)){workingList.addElement(ad);}else{expired.addElement(ad);}}removeExpired(expired);前述的程序段执行了对一个简单缓冲中被发现的服务的管理,让removeExpired()方法去删除那些过期和即将过期的通告

6、(这里没有详细说明removeExpired())。当我们有了一个有效通告的集合之后,我们能够开始对它们进行操作以获得我们需要用来发送消息的管道通告。.注意这个工作的分发是人为的:一些peer可能比其它peer更有能力一些,一些又可能网络连接方面更好些。这些不同应该在分配工作的时候都被考虑到,事实上,也不会故意把工作分配为过多的片段,因为网络通信时间可能比花在实际计算质数的时间更多。(这个例子的目的是说明怎么从一个ModuleSpecAdvertisement得到一个管道通告,这样创建一个新的消息,然后怎样通过管道发送一个消

7、息。)Listing16.14展示了这些自然数列是如何被分为一个一个的子列的,每个子列又能和一个将送往别的peer的消息相对应。消息被插入到一个hash表映射中,映射的键值显示了消息的状态:是否已经发送了?我们是否收到了它的结果?Listing16.14CreatingNewMessagesMapmessageMap=newHashMap();intsize=workingList.size()intmod=high%size;high-=mod;intperPiece=high/size;for(inti=0;i

8、;i++){//createanewmessageMessagemsg=pipeSvc.createMessage();msg.setString(ServiceConstants.LOW_INT,low);//lastmessagewillgettocomputeabitmoreif(i==size-1){high=low+perPiece?1+mod;}else{high=low+perPiece-1;}msg.setString(ServiceConstants.HIGH_INT,high);low+=perPiece

9、;//weneithersentthemessage,nordidwegetaresponseStatusMapstatusMap=newStatusMap(false,false);StatusMapstatusMap=newStatusMap(false,false);messageMap.put(statusMap,msg);}StatusMap就是一对布尔值,这里并没有列出我们的最后一步就是从每个ModuleSpecAdvertisement中提取管道通告,打开每个管道,发送一个消息到那管道,然后将这个消息标记为“已

10、经发送”。应记得一个通告就是一个结构化的文档,类似于XML文档,它能轻易的被转换为一个文本文档然后打印出来,在开发和测试的时候查阅通告的内容是非常有好处的。Listing16.15PrintinganAdvertisementCollectionads=messageMap.values(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。