JXTA P2P编程技术例程四.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JXTA P2P编程技术例程四

JXTA, P2P编程技术例程(4) 作者:yxiong2000 | 日期:2004-07-30 | 字体:大 中 小 广告处理 在我们建立了发现监听器之后, 它将不停的加入一些新发现的module说明通告到我们的本地缓冲中。 每次processPrimes()方法被调用的时候, 客户peer将尝试连接module说明通告代表的peer, 接入到他们的输入通道中,传递一个消息去初始化这个peer的质数发现服务。) 这个方法的第一个元素就是决定我们能够委托以工作的peer集合, 应该记得一个通告有一个期限限制, 因此我们要消除那些不在有效的通告。 Public int[] processPrimes(int low, int high) { Set setCopy = null; synchronized(adverts) { Set setCopy = (Set) adverts.clone(); } ArrayList workingList = new ArrayList(); ArrayList expired = new ArrayList(); long currentTime = System.getCurrentTimeMillis(); Iterator it = workingSet.iterator(); while (it.hasNext()) { ModuleSpecAdvertisement ad = (ModuleSpecAdvertisement)it.next(); if (ad.getLocalExpirationTime() currentTime + (2 * 60 *1000)) { workingList.addElement(ad); } else { expired.addElement(ad); } } removeExpired(expired); 前述的程序段执行了对一个简单缓冲中被发现的服务的管理, 让removeExpired()方法去删除那些过期和即将过期的通告(这里没有详细说明removeExpired())。 当我们有了一个有效通告的集合之后,我们能够开始对它们进行操作以获得我们需要用来发送消息的管道通告。 . 注意这个工作的分发是人为的: 一些peer可能比其它peer更有能力一些, 一些又可能 网络连接方面更好些。 这些不同应该在分配工作的时候都被考虑到, 事实上, 也不会故意把工作分配为过多的片段, 因为网络通信时间可能比花在实际计算质数的时间更多。 (这个例子的目的是说明怎么从一个ModuleSpecAdvertisement得到一个管道通告, 这样创建一个新的消息, 然后怎样通过管道发送一个消息。) Listing 16.14展示了这些自然数列是如何被分为一个一个的子列的,每个子列又能和一个将送往别的peer的消息相对应。 消息被插入到一个hash表映射中, 映射的键值显示了消息的状态: 是否已经发送了? 我们是否收到了它的结果? Listing 16.14 Creating New Messages Map messageMap = new HashMap(); int size = workingList.size() int mod = high % size; high -= mod; int perPiece = high / size; for (int i=0; i size; i++) { //create a new message Message msg = pipeSvc.createMessage(); msg.setString(ServiceConstants.LOW_INT, low); //last message will get to compute a bit more if (i == size-1) { high = low + perPiece ?1 + mod; } else { high = low + perPiece -1; } ms

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档