📄 discoverypeers.java
字号:
import net.jxta.discovery.DiscoveryEvent;
import net.jxta.discovery.DiscoveryListener;
import net.jxta.discovery.DiscoveryService;
import net.jxta.document.Advertisement;
import net.jxta.document.AdvertisementFactory;
import net.jxta.document.MimeMediaType;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupID;
import net.jxta.platform.NetworkManager;
import net.jxta.protocol.DiscoveryResponseMsg;
import net.jxta.protocol.ModuleImplAdvertisement;
import net.jxta.protocol.PeerGroupAdvertisement;
import net.jxta.protocol.PeerAdvertisement;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.List;
import java.util.ArrayList;
public class DiscoveryPeers implements DiscoveryListener {
private PeerAdvertisement padv;
private List peers = new ArrayList();
private DiscoveryService hdisco;
public void setHdisco(DiscoveryService hdisco) {
this.hdisco = hdisco;
}
public void setPeers(List peers) {
this.peers = peers;
}
public List getPeers() {
return peers;
}
/**
* 从远程查找在线的对等点
*/
public void run() {
//定义查找的次数
int count = 3;
try {
//添加Discovery Listener
hdisco.addDiscoveryListener(this);
//循环3次从远程查找本点组内的对等点
while (count-- > 0) {
try {
Thread.sleep(10000);
} catch (Exception e) {
}
// 从远程查找在线的对等点
hdisco.getRemoteAdvertisements(null, DiscoveryService.PEER,
null, null, 1, null);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查找到对等点触发的方法
*/
public void discoveryEvent(DiscoveryEvent ev) {
//获取回复的消息
DiscoveryResponseMsg res = ev.getResponse();
// 从消息找获取查找到的通告
Enumeration enum1 = res.getAdvertisements();
/**
* 将查找到的peer的name保存在peers中
*/
if (enum1 != null) {
while (enum1.hasMoreElements()) {
peers.clear();
padv = (PeerAdvertisement) enum1.nextElement();
System.out.println("查找到在线的用户:" + padv.getName());
//peers.add(padv.getPeerID());
peers.add(padv.getName());
setPeers(peers);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -