JXTA核心协议之对等机发现协议(PDP)(二)

5.DiscoveryListener接口<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


         发现discovery请求后,接到响应时应用程序需要获得通知以便取得响应中的Advertisement。在Java参考实现中,可以给Discovery Service注册一个listener对象,当Discovery Response Messages到达时可以通过DiscoveryService获得通知。关于listener在Java中的作用,我在这里就不再多说了,如果不是很懂的话,找本Java的基础书看看吧L



         每次DiscoveryService实例收到Discovery Response Message,都会调用该listener的discoveryEvent方法,并传递事件本身,事件中包括了响应的细节。但discoveryEvent的方法必须用到DiscoveryEvent类的参数。下面介绍一下DiscoveryEvent类:

 

6.DiscoveryEvent


         作为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的一些问题


l          使用Advertisement:所有的Advertisement都是从net.JXTA.document.Advertisement抽象类继承而来的。Advertisement定义了几个方法,最重要的是getDocument方法。该方法将Advertisement转换为特定MIME类型的Document实例。

l          实例化一个Advertisement:

PeerAdvertisement peerAdv = (PeerAdvertisement) AdvertisementFactory.newAdvertisement(“JXTA:PA”); 或将“JXTA:PA”改为:PeerAdvertisement.getAdvertisementType()。

l          发布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);

 

时间: 2024-09-08 08:35:36

JXTA核心协议之对等机发现协议(PDP)(二)的相关文章

JXTA核心协议之对等机发现协议(PDP)(三)

还是先用一个例子来说明吧!:)这个例子用来说明怎样发现网络上的其他JXTA Peers.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  

RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接的解决方法_win服务器

今天一个客户反映,远程桌面无法连接 ,我看了一下,ping都是正常的,telnet了一下远程端口,也是可以连接的,但是远程桌面却总是连不上,就先帮他重启了一下.重启后,远程可以登入了,就去查看了一下服务器日志,发现了这样一条错误: RDP 协议组件 X.224 在协议流中发现一个错误并且中断了客户端连接. 事件类型: 错误 事件来源: TermDD 描述: RDP 的 "DATA ENCRYPTION" 协议组件在协议流中检测到一个错误并且中断了客户机. 这里,RDP,即远程桌面协议.

《部署IPv6网络(修订版)》一2.4 邻居发现协议

2.4 邻居发现协议 部署IPv6网络(修订版) 大约在10年以前,RFC 1970初步设计并公布了IPv6邻居发现.从那时之后在RFC 2461中进行了修改,一个新的版本(重点在改错而不是修改)是在RFC 2461bis中进行的.一些扩展已经在反向邻居发现(RFC 3122).缺省路由器选择(RFC 4191)和自动配置(RFC 2462)中描述. 在这10年当中,Internet团体的重点发生了重大转变,原来没有得到很多关注的领域,如安全性和移动性,现在是大多数努力的重点.该重点的转变导致了

【Http协议】深入理解HTTP协议

来源:http://www.blogjava.net/zjusuyong/articles/304788.html 深入理解HTTP协议 1. 基础概念篇 1.1 介绍   HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 194

《趣学CCNA——路由与交换》一第2章 TCP/IP协议2.1 TCP协议简介

第2章 TCP/IP协议 趣学CCNA--路由与交换 在上一章,我们郑重其事地介绍了无聊的OSI七层参考模型,并浓墨重彩地讲述了其中每一层负责提供的功能.OSI模型出身名门.条理清晰,只有一个"小小的"缺点,那就是一直没人太拿它当回事儿.所以,如果对它太认真,你就败了. 我们是有职业精神的,因此在介绍OSI模型时反复强调了这个模型是如何地曲高和寡.我们在上一章中花大篇幅介绍OSI模型有三个目的:一是延续各类技术教材的惯例,以免将本书作为技术开蒙读物的读者在与别人讨论技术问题时,因全然不

《Linux高性能服务器编程》——第1章 TCP/IP协议族 1.1 TCP/IP协议族体系结构以及主要协议

第1章 TCP/IP协议族 现在Internet(因特网)使用的主流协议族是TCP/IP协议族,它是一个分层.多协议的通信体系.本章简要讨论TCP/IP协议族各层包含的主要协议,以及它们之间是如何协作完成网络通信的. TCP/IP协议族包含众多协议,我们无法一一讨论.本书将在后续章节详细讨论IP协议和TCP协议,因为它们对编写网络应用程序具有最直接的影响.本章则简单介绍其中几个相关协议:ICMP协议.ARP协议和DNS协议,学习它们对于理解网络通信很有帮助.读者如果想要系统地学习网络协议,那么R

协议森林06 瑞士军刀 (ICMP协议)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载.   到现在为止,我们讲解了网络层中最重要的IP协议(参考协议森林).IP协议的一个重要补充是是ICMP协议.   ICMP协议 ICMP(Internet Control Message Protocol)是介于网络层和传输层的协议.它的主要功能是传输网络诊断信息.       ICMP传输的信息可以分为两类,一类是错误(error)信息,这一类信息可用来诊断网络故障.我们已经知道,IP协议的工

iOS9苹果将原http协议改成了https协议的方法_IOS

解决方法: 在info.plist 加入key <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 下面给大家介绍ios中http 和https 协议的访问 最近做个项目,开始采用的是HTTP协议实现客户端和服务器端的交互,后来需要改成HTTPS协议.在修改的过程中发现了一些问题,解决方案如下:

协议森林07 傀儡 (UDP协议)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载.   我们已经讲解了物理层.连接层和网络层.最开始的连接层协议种类繁多(Ethernet.Wifi.ARP等等).到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系).进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP.UDP.SCTP等).这就好像下面的大树,根部(连接层)分叉很多,然后统一到一个树干(网络层),到了树冠(传输层)部分又开始开始分叉