(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()返回结果。
}

 

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

你可能感兴趣的:(Blog)