Bem, tenho um exemplo de descobrir outros peers no netPeerGroup, não sei se esse netPeerGroup corresponde ao grupo da rede local ou um grupo global, pois o PeerGroupID é sempre o mesmo, mas se for isso, eu deveria encontrar outros peers, e isso não está funcionando. Já chequei os jars, liberei as portas específicas do windows e do roteador, mas continuo com o mesmo problema, se alguém puder me ajudar com a parte das portas é só postar, porque não sei se liberei corretamente.
Aqui vai o código que testei:
[code]import java.io.IOException;
import java.util.Enumeration;
import net.jxta.discovery.DiscoveryEvent;
import net.jxta.discovery.DiscoveryListener;
import net.jxta.discovery.DiscoveryService;
import net.jxta.exception.PeerGroupException;
import net.jxta.id.IDFactory;
import net.jxta.peer.PeerID;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupID;
import net.jxta.platform.NetworkConfigurator;
import net.jxta.platform.NetworkManager;
import net.jxta.protocol.DiscoveryResponseMsg;
import net.jxta.protocol.PeerAdvertisement;
public class DiscoveryDemo implements Runnable, DiscoveryListener {
static PeerGroup netPeerGroup = null;
private DiscoveryService discovery;
static NetworkConfigurator netconfig;
// start the JXTA platform
private void startJxta() throws IOException, PeerGroupException {
NetworkManager manager = new NetworkManager(NetworkManager.ConfigMode.EDGE, null);
PeerID pid = IDFactory.newPeerID(PeerGroupID.worldPeerGroupID, new String("nada").getBytes());
manager.startNetwork();
netconfig = manager.getConfigurator();
netconfig.setPeerID(pid);
netconfig.setTcpPort(9710);
netconfig.setTcpIncoming(true);
netconfig.setTcpOutgoing(true);
netconfig.setTcpEnabled(true);
netconfig.addRdvSeedingURI("tcp://123.123.123.123:1234");
netPeerGroup = manager.getNetPeerGroup();
System.out.println(netPeerGroup.getPeerGroupName());
// Get the discovery service from our peer group
discovery = netPeerGroup.getDiscoveryService();
}
/**
* 35 * This thread loops forever discovering peers 36 * every minute, and
* displaying the results. 37
*/
public void run() {
try {
// Add ourselves as a DiscoveryListener for DiscoveryResponse events
discovery.addDiscoveryListener(this);
while (true) {
System.out.println("Sending a Discovery Message");
// look for any peer
discovery.getRemoteAdvertisements(null, DiscoveryService.GROUP,
null, null, 0, null);
// wait a bit before sending next discovery message
try {
Thread.sleep(60 * 1000);
} catch (Exception e) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 3 * by implementing DiscoveryListener we must define this method 4 * to
* deal with discovery responses 65
*/
public void discoveryEvent(DiscoveryEvent ev) {
DiscoveryResponseMsg res = ev.getResponse();
String name = "unknown";
// Get the responding peer's advertisement
PeerAdvertisement peerAdv = res.getPeerAdvertisement();
// some peers may not respond with their peerAdv
if (peerAdv != null) {
name = peerAdv.getName();
}
System.out.println("Got a Discovery Response ["
+ res.getResponseCount() + " elements] from peer : "
+ name);
// printout each discovered peer
PeerAdvertisement adv = null;
Enumeration enume = res.getAdvertisements();
if ( enume != null) {
while (
enume.hasMoreElements()) {
adv = (PeerAdvertisement)
enume.nextElement();
System.out.println(" Peer name = " + adv.getName());
}
}
}
static public void main(String args[]) throws IOException, PeerGroupException {
DiscoveryDemo myapp = new DiscoveryDemo();
myapp.startJxta();
myapp.run();
}
}[/code]