【问题标题】:Join existing PeerGroup in JXTA/JXSE在 JXTA/JXSE 中加入现有的 PeerGroup
【发布时间】:2015-08-20 06:34:36
【问题描述】:

我在使用 JXSE 时遇到问题。 假设我有一个集合点和一个边缘点,不在同一个本地网络上。

会合点创建一个peerGroup“test”,并在这个组中发布一个名为“test Advertisement”的广告

假设我确定我的 EdgePeer 已连接到会合点。我可以使用 netpeerGroup.getRemoteAdvertisements() 找到现有的组“测试”。

但我不知道如何加入这个现有的组。我尝试了 netpeergroup.newGroup(testAdv),其中 testAdv = 创建的 peerGroupAdvertisement。

我在“测试”PeerGroup 中找不到广告“测试广告”。 但是,如果我在本地做所有这些事情,它就会起作用。也许我不明白 jxta 在本地和互联网上的工作方式的区别。

这里是创建或加入群组的代码:

public void addGroup(final String name) {
    ModuleImplAdvertisement mAdv = null;
    PeerGroup group = null;
    temp = null;

    defaultGroup.getDiscoveryService().getRemoteAdvertisements(null, DiscoveryService.GROUP, 
            "Name", name, 1, new DiscoveryListener() {

                @Override
                public void discoveryEvent(DiscoveryEvent event) {
                    Enumeration<Advertisement> advs = event.getResponse().getAdvertisements();
                    while(advs.hasMoreElements()) {
                        System.out.println("groupe found");
                        PeerGroupAdvertisement adv = (PeerGroupAdvertisement) advs.nextElement();
                        System.out.println("group name : " + adv.getName());
                        try {
                            temp = defaultGroup.newGroup(adv);
                            System.out.println("group joined");
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }

                }
            });

    try {
        Thread.sleep(10000);
        System.out.println("waiting for group ...");
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    if(temp == null) {
        try {
            System.out.println("creating new group ..");
            mAdv = defaultGroup.getAllPurposePeerGroupImplAdvertisement(); /* Getting the advertisement of implemented modules */
            temp = defaultGroup.newGroup(generatePeerGroupID(name), mAdv, name, name); /* creating & publishing the group */
            getDefaultGroup().getDiscoveryService().remotePublish(temp.getPeerGroupAdvertisement());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

【问题讨论】:

    标签: java p2p jxta


    【解决方案1】:

    终于找到问题了。您必须在每个组上启动 RendezVous 服务,而不仅仅是 netPeerGroup。

    这就是为什么我的软件可以在本地运行但不能在互联网上运行的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 2012-02-13
      • 2011-11-19
      • 1970-01-01
      • 2011-09-04
      • 2012-03-17
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多