`

(JXTA P2P)利用监听DiscoveryListener发现远程广告

阅读更多

最近朋友们一直都是问为什么老是远程发现不了。估计都是以前书上的例子害的。我们看过这么多书,一定会发现,所有的例子都是本地发现的。而且只是写出了远程发现的语句,但是其实只是向我们显示如何远程发现,其实并没有说明远程发现的结果到底出现在那里,谁去接受远程发现的广告。

下面我们就用一个很简单的例子来说明一下,远程发现的结果到底出现在那里。在很多例子中我们经常看到这句语句dis.getRemoteAdvertisements(null , DiscoveryService.GROUP, key,name, 1, null );,而且会说明这个是远程发现广告。细心的朋友会去查看,有几个这种的方法,各个参数是什么类型。

 

结果我们就会发现最后1个参数null,其实是一个DiscoveryListener,结果终于出来啦。就是它,DiscoveryListener监听。下面给出一个简单的代码,并在代码中写明是如何发现的,得到结果的。

public class DiscoveryPeer implements DiscoveryListener {//第1步:首先我们要实现这个DiscoveryListener监听
    private PeerGroup peerGroup = null;
    private DiscoveryService dis = null;
    public void launchJXTA(){
        try {
            peerGroup  =  new NetPeerGroupFactory().getInterface();
            dis = peerGroup.getDiscoveryService();
        } catch (PeerGroupException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
    //第2步:真正实现这个发现事件。得到发现的广告,重点就是这里,这里你会发现你指定发现的广告,然后得到你想要的广告。
    public void discoveryEvent(DiscoveryEvent event) {
        //mes里面就有我们所需要的广告内容,然后我们只要为远程发现广告,添加这个监听。结果就保存在DiscoverEvent
       
        DiscoveryResponseMsg  mes = event.getResponse();
    }
    //第3步:为需要远程发现监听的地方添加监听。
    public void discoveryAdv(){
        dis.getRemoteAdvertisements(null, DiscoveryService.ADV,
                "Name", "张三", 5, this);//这里这个this,就是为本Peer添加该监听
    }
   
    //完成上面三步,利用远程发现广告就完全实现的了。只是一发现你需要的广告,就会触发discoveryEvent,然后利用event.getResponse()返回结果。
}

 

希望上面能让学习的同学理解。

3
2
分享到:
评论
6 楼 leigous 2011-04-18  
牙哥!跨防为墙通信该怎么做!!
5 楼 yufei1536 2010-06-21  
你好,我是在一个路由器下两台机器做jxta通信的,一个作为服务方,发布管道广告,建立输入管道,等待连接,另外一个作为客户端,搜索这个管道广告,然后用这个广告连接,牙哥你看这个思路有问题吗?我刚开始做jxta知道的很少,希望能指点我。在我博客里有,如果有空请帮我看看,谢谢。
4 楼 lyndon.lin 2010-05-20  
上面不说了返回结果是这个event.getResponse()。不是dstmp.getRemoteAdvertisements(null, DiscoveryService.GROUP, "Name",
"MyChatGroup", 1,this); 这个函数等于多少。你再仔细看一下上面的文字。
还有就是如何加入对等组,可以看看http://lyndon-lin.iteye.com/blog/636716我写这篇博客。
3 楼 lifeng_2009 2010-05-19  
牙哥:
     我现在已经能在网络上搜索到PeerGroup了。之前你写过文章在本地发现PeerGroup,是用
Enumeration  en = dstmp.getLocalAdvertisements(DiscoveryService.ADV,
"Name", "MyChatGroup:PipeAdv:" + name);
来接收,但是现在用
dstmp.getRemoteAdvertisements(null, DiscoveryService.GROUP, "Name",
"MyChatGroup", 1,this);
搜索网络的时候返回的是一个INT类型的
我想把本地的PEER 加入到MyChatGroup 不知道该怎么加入,能帮助下吗?
2 楼 lyndon.lin 2010-05-18  
呵,太过奖了。只是知道而已
1 楼 lifeng_2009 2010-05-18  
牙哥 感觉你写书都可以了,精通啊!

相关推荐

    jxta远程教学p2p技术

    远程教学 P2P jxta java 远程教学 源代码 jxta远程教学p2p技术,一个很好的P2P例子

    JXTA P2P编程技术例程

    **JXTA(Java Xtreme Protocol)** 是Sun Microsystems公司推出的一种开放源代码的P2P(Peer-to...这四个文档将逐步展示JXTA的使用方法,帮助开发者从理论到实践,从而构建出能够高效利用网络资源、自主协作的P2P系统。

    JXTA-P2P.rar_jxta p2p_p2p jxta_p2p java_p2p jxta

    通过之前将近一个月对于JXTA技术的研究,终于大致了解了P2P网络JXTA技术的JAVA语言实现过程,特整理出来,以供大家交流讨论。其实,关于概念和该技术的介绍,也可以找到一些资料,在此我就不再介绍,我直接通过代码...

    fk.zip_jxta_局域网 jxta p2p

    标题中的“fk.zip_jxta_局域网 jxta p2p”表明这是一个与JXTA(Java_EXTensible_Architecture)相关的P2P(Peer-to-Peer)技术在局域网应用的项目压缩包。JXTA是Sun Microsystems推出的一种开放标准,它允许设备之间...

    JXTA Java P2P 网络编程技术

    4. **实现发现机制**:利用发现服务查找网络中的其他节点或所需的服务。 5. **建立管道**:创建管道实例,用于节点间的通信。 6. **处理事件**:编写事件监听器,响应节点的加入、离开、资源的发布和查找等事件。 ...

    ComputeStats.rar_jxta p2p_site:www.pudn.com_协同

    - **JXTA协议栈**:包括广告(Advertizing)、发现(Discovery)、管道(Pipes)、代理(Proxies)、服务(Services)等组件,它们为P2P应用提供了基础架构。 - **JXTA ID**:每个节点都有一个独特的标识,用于在...

    HelloJxta.rar_jxta_p2p jxta

    总结来说,“HelloJxta.rar”是一个理想的入门级JXTA P2P编程示例,通过分析和实践其中的代码,开发者可以深入了解P2P网络的工作机制,以及如何利用JXTA构建实际的对等网络应用。同时,配合www.pudn.com.txt提供的...

    JXTA——Java P2P网络编程技术

    5. **协议栈(Protocol Stack)**: JXTA的核心协议栈包括了身份管理、发布/发现、消息传递和网络层等子系统,这些子系统协同工作以实现P2P网络的功能。 根据提供的压缩包文件名称列表,我们可以推测文档可能涵盖了...

    基于JXTA的p2p文件共享

    学习JXTA并利用其构建P2P文件共享系统,不仅可以提升文件传输效率,还能降低运营成本,同时增强网络的健壮性。通过深入理解JXTA的机制和特性,开发者可以创建出高效、可靠的P2P应用,满足各种网络环境下的文件共享...

    JXTA-Java P2P Programming pdf

    - **案例研究**:通过具体的案例展示如何利用JXTA Shell来实现特定的P2P应用功能。 #### 五、总结 本书《JXTA: Java P2P Programming》不仅为读者提供了JXTA技术的基础知识,还通过丰富的示例和实践经验帮助开发者...

    jxta p2p ieee 论文

    ### jxta p2p ieee 论文 #### 摘要与背景 本文献讨论了基于交换的激励机制在对等(P2P)文件共享网络中的应用。作者Kostas G. Anagnostakis和Michael B. Greenwald来自宾夕法尼亚大学计算机与信息科学系,针对现有...

    jxta-shell-src-2.4.1.zip_java p2p_jxta_jxta shell_p2p jxta

    通过学习这个压缩包,开发者可以了解到如何使用JXTA API创建P2P应用,理解P2P网络的基本概念,如边缘节点、广告、管道和协议栈等。JXTA Shell的源代码能帮助开发者了解如何实现P2P网络的管理和控制,包括节点发现、...

    基于jxta的p2p即时通信系统设计

    2. **JXTA协议**:JXTA提供了P2P网络的基础框架,包括对等体的发现、连接、身份验证和安全通信等功能。通过JXTA,开发者可以轻松实现P2P应用的各个组件,如数据交换、服务发布和查找。 3. **对等组与管道**:在JXTA...

    jxta-java p2p网络编程技术

    3. **广告(Advertisements)**:JXTA使用XML格式的广告来描述资源、服务或对等节点自身的信息,这些广告可以在网络中广播,使其他节点能够发现并使用它们。 4. **管道(Pipes)**:管道是JXTA中实现节点间通信的...

    jxta java的p2p平台 笔记

    3)广告以及发现资源(在JXTA网络中,资源包括了很多含义:peers,管道,groups等) 4)相互通信 5)检测对方 利用JXTA,可以容易实现以下几个方面的互操作p2p程序 1)相互发现peers,不管peers是在防火墙还是NATs...

    ConnectX.rar_局域网 jxta p2p

    基于jxta的P2P框架的系统,主要功能有局域网聊天、文件共享系统、白板等。

    JXTA-Java-P2P网络编程技术书后源码

    JXTA提供了丰富的API和协议栈,支持P2P网络中的广告、发现、连接、交换和管理等功能。它定义了五种核心服务:边缘服务(Edge Service)、管道服务(Pipe Service)、发布/订阅服务(Publish/Subscribe Service)、...

    jxta学习手册(p2p,java)

    无论是对于研究分布式计算的技术人员还是希望利用P2P技术进行创新的企业而言,JXTA都是一款值得深入了解和使用的工具。更多关于JXTA的详细信息,可以访问其官方网站http://www.jxta.org/进行深入学习。

    基于jxta的P2P框架的系统

    总结起来,"基于jxta的P2P框架的系统"是一个充分利用JXTA框架,构建了局域网内聊天、文件共享和白板协作的全面应用。通过P2P技术,实现了无中心服务器、高效且分布式的网络交互,展现了P2P技术在现代网络应用中的...

Global site tag (gtag.js) - Google Analytics