0

我正在使用 JXSE 在 Java 中开发基于 JXTA 的应用程序。它在本地工作得很好,但现在我尝试在互联网上完成这项工作。

例如,我在本地网络上有 2 台计算机。他们会立即找到对方,并且该应用程序将正常工作。没问题。

现在,我在另一个本地网络上有这 2 台计算机和 2 台其他计算机。据我了解,对于最低要求,我需要 2 个将连接的公共 RendezVous 对等点(每个本地网络上一个)。但我找不到如何处理它。

在我的应用程序中,我使用 setAutoStart 方法,这意味着如果需要,对等点将自动提升为 RendezVous 对等点。

所以我认为,如果不给出他们的公共地址,两个遥远的同伴就不可能发现对方。所以我需要在对等方上检索一个有效的 tcp 地址并将其提供给其他人。如果有人知道该怎么做,我会很高兴的!

编辑:我的配置

//Network setup
    try {
        manager = new NetworkManager(NetworkManager.ConfigMode.EDGE, peer_name, conf.toURI());
    } catch (IOException e) {
        //chemin incorrect ? 
        e.printStackTrace();
        System.exit(-1);
    }

    try {
        NetworkConfigurator configurator = manager.getConfigurator();
        configurator.setTcpPort(port);
        configurator.setTcpEnabled(true);
        configurator.setTcpIncoming(true);
        configurator.setTcpOutgoing(true);
        configurator.setUseMulticast(true);
        configurator.setPeerID(peer_id);
    } catch (IOException e) {
        // ? Si le dossier a bien été crée pas trop de raison d'avoir cette exception 
        e.printStackTrace();
    }

// ..... some code ....... ///


    PeerGroup net_group = manager.startNetwork();

    net_group.getRendezVousService().setAutoStart(true);

所以我会创建一个与 net_group.getRendezVousService 一起使用的 addRendezVous(URI uri) 或 addRendezVous(String uri),但我真的不知道如何找到 URI 或地址..

我的应用程序: 我的应用

4

1 回答 1

0

根据我的经验,我可以提出以下建议:

1)确保端口和IP地址是开放和可用的。如果您有防病毒软件,请确保端口已打开。

2) 日志信息非常丰富。您可以发布您收到的日志消息吗?在您的日志消息中查找类似的内容:New Seeding... 2013 年 7 月 31 日下午 6:50:05 net.jxta.impl.endpoint.netty.AsynchronousNettyMessenger connectionDied

3) 确保网络管理器在连接超时之前等待足够长的时间连接到集合点。这样的事情应该让边缘等待足够长的时间:

布尔连接 = NetworkManager.waitForRendezvousConnection(20 * 1000);

此外,您可以将 Rendezvous Server 的种子地址添加到边缘对等点的网络配置中。这是我使用的代码:

NetworkManager edgePeerManager = new NetworkManager(NetworkManager.ConfigMode.EDGE,...);
NetworkConfigurator edgePeerConfigurator = edgePeerManager.getConfigurator();

// This is the rendezvous' IP address and listening port
RendezvouServerTCPSeed = "tcp://192.XXX.X.XX:9705";

edgePeerConfigurator.addRdvSeedingURI(RendezvouServerTCPSeed);

PeerGroup edgePeerGroup=  edgePeerManager.startNetwork();

在 Rendezvous Server 中,如果连接成功,您将在控制台收到一条消息:

INFO: Line 145 net.jxta.impl.endpoint.netty.NettyTransportClient.getMessenger()
processing request to open connection to tcp://192.XXX.X.XX:9705
net.jxta.impl.endpoint.netty.NettyTransportClient getMessenger
INFO: succeeded in connecting to tcp://192.XXX.X.XX:9705, remote peer has logical address     jxta://cbid-5961XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

如果您有解决问题的方法,请告诉我。

谢谢 DD

于 2014-12-24T07:06:00.830 回答