当前位置: 首页 > news >正文

网站服务器升级一般多久专业网站设计 网络服务

网站服务器升级一般多久,专业网站设计 网络服务,学院网站策划书,搭建网站程序JXTA核心协议之对等机发现协议#xff08;PDP-peer discover protocol#xff09; PDP主要用来发布自己的advertisement信息#xff0c;和查找其他Peer的advertisement。Advertisement是Peer之间各 种信息交流的基本单元#xff0c;发现其他Peer及其他Peer及其资源的问题…JXTA核心协议之对等机发现协议PDP-peer discover protocol PDP主要用来发布自己的advertisement信息和查找其他Peer的advertisement。Advertisement是Peer之间各 种信息交流的基本单元发现其他Peer及其他Peer及其资源的问题就转换为发现描述各资源的Advertisement 的问题只要找到对应的Advertisement就相当于找到了该资源。 PDP定义了发现其他Peer和资源的协议该协议包括两个方面一方面用于请求获得其他Peer的Advertisement 另一方面用于响应其他Peer的这种请求。 1PDP的消息格式 PDP只由两种格式构成他们是用于发现Advertisement的请求格式用于响应请求的响应格式。这两种 消息定义了两个Peer之间互相发现对方所需的所有元素。虽然discovery消息定义了请求和对应的响应 有很多原因会造成对应某请求的响应收不到。 2Discovery Query Message 一个Peer想要寻找某种Advertisement时就会发出Discovery Query MessageDiscovery请求消息 这个请求消息的格式如下 ?xml version ”1.0” encoding ”UTF-8”? jxta: DiscoveryQuery                   PeerAdv…/PeerAdv                    //可选Peer ID如果为null则转向所在PeerGroup。 Type…/Type                                //有三种类型PEER0GROUP1ADV2。 Attr…/Attr                                     //可选指明响应Advertisement中的元素名条件 Value…/Value                           //可选指明响应Advertisement中的元素值条件 Threshold…/Threshold                //可选数字指明最多可以接受Advertisement数目。           /jxta: DiscoveryQuery 特殊情况 当Type设为0时即请求获得Peer Advertisement时将threshold也设为0发出这种请求意味着请求方想想 获得所有的Peer Advertisement。这样收到请求的所有Peer都响应提供自己的Peer Advertisement。 如果Attr和Value的值没有设定其他Peer响应时回复的是Advertisement的随机集合当然前提是符合Type指 定的类型而且未超过Threshold元素规定的最大响应数目。 3Discovery Response Message 为了回复Discovery Query MessagePeer创建一个Discovery Response Message其中包含符合请求中 要求的Advertisement如Attr/Value要求或Advertisement类型的要求。 ?xml version ”1.0” encoding ”UTF-8”? jxta: DiscoveryQuery Type…/Type Count…/Count             //包含integer值的可选元素代表Message中响应元素的总数目。 Attr…/Attr Value…/Value PeerAdv…/PeerAdv Response Expiration ”expiration time”…/Response /jxta: DiscoveryQuery Response一个可选元素包含符合Discovery Query Message中搜索要求的Advertisement。每个Discovery Response Message可以包含多了Response元素没个元素只包含一个Advertisement。而Response元素个数之和为Count的值。Response元素中的Expiration属性指明Advertisement的有效时间长度当然这个时间以毫秒为单位。 4Discovery Service 服务的实例都与特定的Peer Group相关联。只有同一个Peer Group中的Peer才能通过服务来相互通信。默 认情况下所有的Peer都属于一个大的Peer Group称为NetPeerGroup因而所有的Peer及其Advertisement 能相互发现。Discovery Service提供了如下功能 获得远程的Advertisement 获得本地的Advertisement 将Advertisement发布到本地 将Advertisement发布到远程 释放本地Advertisement DiscoveryService接口为开发人员提供了简单的方法来发送discovery请求和处理discovery响应。使用其方法 来发送Discovery Query Message甚至不需要开发人员创建和发布DiscoveryQuery对象。 5DiscoveryListener接口 发现discovery请求后接到响应时应用程序需要获得通知以便取得响应中的Advertisement。在Java参考 实现中可以给Discovery Service注册一个listener对象当Discovery Response Messages到达时可以通过 DiscoveryService获得通知。 每次DiscoveryService实例收到Discovery Response Message都会调用该listener的discoveryEvent方 法并传递事件本身事件中包括了响应的细节。但discoveryEvent的方法必须用到DiscoveryEvent类的参数 。 6DiscoveryEvent类 作为discoveryEvent方法的参数是为了提供DiscoveryService实例收到的Discovery Response Message 的详情。 7发现远程的Advertisements DiscoveryService接口提供了简便的方法来给其他Peer发送Discovery Query Message不需要自己创建 DiscoveryQueryMsg实例而是用getRemoteAdvertisements方法。它有五个参数第一个参数为Peerid如果 为空则会把请求发给本地的网络上的所有Peer并通过Rendezvous Peer对外广播。参考下程序Line38~39 8发现缓存中的Advertisement 响应一个Discovery Query Message的Advertisement会自动保存在本地的Advertisement缓存中DiscoveryListener实现中不需要再写缓存的函数。并通过DiscoveryService接口的getLocalAdvertisements方法。这与寻找远程的Peer不同用此方法可以马上得到结果不需要用DiscoveryListener实现来处理在DiscoveryResponseMsg响应中返回的Advertisement马上返回一个与请求参数相匹配的Advertisement的Enumeration。 9清除缓存中的Advertisement 有时应用程序可能想清除所有的缓存比如应用程序很久没有使用估计所有Advertisement都已失效。 通过下面的方法来清除缓存中的Advertisement    public void flushAdvertisement (String id,int type); 10关于Advertisement的一些问题 使用Advertisement所有的Advertisement都是从net.jxta.document.Advertisement抽象类继承而来的。Advertisement定义了几个方法最重要的是getDocument方法。该方法将Advertisement转换为特定MIME类 型的Document实例。 实例化一个Advertisement PeerAdvertisement peerAdv (PeerAdvertisement)   AdvertisementFactory.newAdvertisement(“jxta:PA”); 或将“jxta:PA”改为 PeerAdvertisement.getAdvertisementType()。 发布Advertisement发布有本地发布和远程发布。 本地发布方法有 public void publish (Advertisement adv, int type)throws IOException; public void publish (Advertisement adv,int type,long lifetime,long lifetimeforOhers)throws IOException; 远程发布方法有 public void remotePublish (Advertisement adv, int type); public void remotePublish (Advertisement adv, int type, long lifetime); 11应用实例 //Source Code: DiscoveryDemo.java 1   import java.util.Enumeration; 2   import net.jxta.discovery.*; 3   import net.jxta.exception.*; 4   import net.jxta.peergroup.*; 5   import net.jxta.protocol.*; 6   7   public class DiscoveryDemo implements Runnable, DiscoveryListener { 8   9      static PeerGroup netPeerGroup null; 10      private DiscoveryService discovery; 11 12      // 开始配置JXTA平台 13      private void startJxta() { 14          try { 15              netPeerGroup PeerGroupFactory.newNetPeerGroup(); 16          }catch ( PeerGroupException e) { 17 18              //如果不能实例化Peer Group输出原因并结束程序。 19              System.out.println(Fatal error : group creation failure); 20              e.printStackTrace(); 21              System.exit(1); 22          } 23 24      //从Peer Group中发现的服务器 25      discovery netPeerGroup.getDiscoveryService(); 26      } 27 28      // 线程将每分钟循环一次直到发现Peers为止并显示找到的结果 29 30      public void run() { 31          try { 32              // 为 DiscoveryResponse events 添加 DiscoveryListener 33              discovery.addDiscoveryListener(this); 34 35              while (true) { 36                  System.out.println(Sending a Discovery Message); 37                  // 寻找Peers每个Peer最多反馈5个 。 38                  discovery.getRemoteAdvertisements(null, DiscoveryService.PEER, 39                                                      null, null, 5); 40 41                  // 等待一分钟 42                  try { 43                      Thread.sleep(60 * 1000); 44                  } catch(Exception e) {} 45 46              } 47          } catch(Exception e) { 48              e.printStackTrace(); 49          } 50      } 51 52      // 为了实现 DiscoveryListener我们必须定义这个方法来处理所反馈信息 53 54      public void discoveryEvent(DiscoveryEvent ev) { 55 56          DiscoveryResponseMsg res ev.getResponse(); 57          String name unknown; 58 59          // 获得Peers的反馈广告 60          PeerAdvertisement peerAdv res.getPeerAdvertisement(); 61 62          // 一些Peers不能反馈他们的 PeerAdvertisement 63          if (peerAdv ! null) { 64              name peerAdv.getName(); 65          } 66 67          System.out.println (Got a Discovery Response [ 68                  res.getResponseCount() elements] from peer : 69                              name); 70 71          // 输出发现的Peer 72          PeerAdvertisement adv null; 73          Enumeration enum res.getAdvertisements(); 74 75          if (enum ! null ) { 76              while (enum.hasMoreElements()) { 77                  adv (PeerAdvertisement) enum.nextElement(); 78                  System.out.println ( Peer name adv.getName()); 79              } 80          } 81      } 82 83      static public void main(String args[]) { 84          DiscoveryDemo myapp new DiscoveryDemo(); 85          myapp.startJxta(); 86          myapp.run(); 87      } 88  } 一个JXTA Peer 用getLocalAdvertisements()方法来检索本地缓存中的Advertisements如果想发现其他的 Advertisements就必须用getRemoteAdvertisements()来发送一个Discovery Query Message给别的Peers。Discovery Query Messages能发送给一个Peer但也能发送到一个JXTA的网络上。在J2SE的平台上Discovery Query Messages还可以发给一个rendezvous。如果这个Peer还没有连接到这个rendezvous上那么Discovery Query Message将只有通过多次的尝试发送到本地的子网。一旦这个Peer已经连接上了一个rendezvous那么Discovery Query Message也将被传送给这个rendezvous peer。一个Peer在Discovery Query Message里包括它自己的广告完成一个公告或者是自动的发现机制。 有两个方法来接收DiscoveryResponse Message你可以等候一个或多个Peer来响应DiscoveryResponse Message并且调用方法getLocalAdvertisements()来检索已经被发现的任何结果并添加到本地的缓存中的广告。添加一个 Discovery Listener来通知发现的Peer当discovery events被接收时调用discoveryEvent()方法。这里有两个方法添加Discovery Listener一个是直接的addDiscoveryListener()参考本程序Line33另一个是通过getRemoteAdvertisements()方法。本例用的是第一种方法如果采用第二种方法可以将下程序的Line38~39写成 discovery.getRemoteAdvertisements(null, DiscoveryService.PEER,null,null,5,this); 并去掉Line33行程序即可。 如果你在运行上面的程序时没有收到任何的Discovery ResponseL你很有可能没有正确的配置好你的JXTA平台环境。请删除.jxta目录下的PlatformConfig文件并重新运行程序。 12小结 本文讲述了JXTA平台如何处理发现其他Peer的有关事宜以及JXTA的Java参考实现中提供的如何给其他Peer发送Discovery请求消息并处理返回的响应。还提到了利用Java参考实现中提供的Discovery接口及实现如何在本地或远程发布Advertisement。 当然上面所介绍的PDP只是JXTA核心协议的一部分还有的一些协议将在以后的文章中再介绍呵呵……:) 注在JXTA里Advertisement广告相当于人类社会中的名片在JXTA网络中的所有资源都通过广告来描述用XML语言来描述Advertisement。
http://www.hkea.cn/news/14330480/

相关文章:

  • 网站建设价格是多少公司简介宣传册设计样本图片
  • 乐清市网站建设设计深圳专业建设网站哪个公司好
  • 成都网站平台建设怎么建设自己导购网站
  • 网站建设不用备案的html仿百度页面代码
  • 贵州省住房和城乡建设厅网站搜索24小时通过网站备案
  • 设计一套网站多少钱CMS网站建设优势
  • 天水建设局网站渣土治理腾讯企点app下载安装
  • 建设部网站预应力资质免费大空间网站
  • 网站托管服务wordpress 设置页面
  • app制作过程和网站一样吗旅游类网站模板
  • 骨干校 建设网站手机网站与普通网站的区别
  • 商丘微网站wordpress在哪放商务通代码
  • 龙之向导外贸经理人网站迈网科技 官方网站
  • 济南国画网站济南网站建设公司广州建设投资集团有限公司
  • 网站更新维护西安网站建站
  • 有没有帮人做CAD的网站wordpress文库插件
  • 《网站设计与建设》电子书网站广审怎么做
  • 深圳购物商城网站设计定制开发一款小程序多少钱
  • 伪静态 网站如何扫描妇科医院手机网站
  • 东莞网站建设代理如何买网站
  • 广西网站建设推广大概需要多少钱国内网页设计网站
  • seo服务的三种方式石家庄关键词优化软件
  • 海安县住房和城乡建设局网站wordpress手册 chm
  • 广东石油化工建设集团公司网站电商网站的建设步骤
  • 网站建设与运营公司财务预算全国建设项目竣工验收公示网站
  • 犀牛云做网站一年多少钱网页设计实训报告大专
  • 怎么备份网站数据库大男人直播视频
  • 最简单的网站模板下载保定网站建设冀icp备
  • 中国十大网站排名学校网站建设整改报告
  • 国内十大少儿编程品牌中山做网站优化