我使用JXSE时遇到问题.假设我有一个rendezVous对等体和一个边缘对等体,而不是在同一个本地网络上.
rendezVous对等体创建一个peerGroup"test",并在该组中发布名为"test advertisement"的广告
假设我确信我的EdgePeer已连接到rendezVous对等体.我可以使用netpeerGroup.getRemoteAdvertisements()找到现有的组"test".
但我不知道如何加入这个现有的小组.我尝试了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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |