之前讲的加入“群”,即对等组。都是不用认证的,只要发现了该“群”,就可以加入“群”。但是这明显是不好的,不管管理上,还是从安全,或者内容上。所以我们要给“群”加上锁,只能让有钥匙的用户进入。
日常方面我们都是使用密码来使用锁匙,在本文我也正是要讲的是使用密码来给“群”上锁,这样,以后有谁想加入该“群”,必须要有该“群”的的钥匙“密码”才行。
在这里本来打算利用一次全写完,可是考虑到,如果把所有内容一次给出,看来麻烦,而且对于理解也不太好。所以会分次给出。在这篇我只想讲讲如何通过身份认证加入“群”的过程。给出部分代码,代码也加上了必要的注释,希望大家可以看明白过程就行。
代码的实现过程,将后续慢慢发出。
在这里只要注意构造方法里程序运行的顺序,就可以看出该过程。
1、启动平台,这是JXTA必要而且是首先运行的。
2、利用netgroup创建一个特定的带有用户名和密码的对等组,也却是我们要创建的目标对等组。
3、通过发现该对等组,利用我们已经知道的用户名和密码,加入对等组。
下面秀出代码:
public class PrivateGroup {
private PeerGroup netpg = null,
spg = null,
dspg=null;
private final static PeerGroupID satellaPID = IDFactory.newPeerGroupID();
private NetworkConfigurator config = null;
public PrivateGroup(){
//启动JXTA平台
netpg = startJxta();
if(null!=netpg){
System.out.println("JXTA平台启动......");
}else{
System.err.println("启动JXTA平台失败:网络对等组为空");
System.exit(-1);//退出系统
}
//定义参数:用户,密码,对等组名称和对等组ID
String login = "PrivatePeerGroups";
String passwd = "RULE";
String groupName = "SatellaGroup";
//创建带密码身份认证的对等组
spg = createPeerGroup(netpg,groupName,login,passwd);
//加入到目标对等组中,即名称为"SatellaGroup"的对等组
if(null != spg){
System.out.println("对等组创建中......");
dspg = discoveryPeerGroup(netpg,satellaPID);//创建对等成功后,然后搜索到该对等组
if(null!=dspg){
System.out.println("对等组搜索中......");
joinPeerGroup(dspg,login,passwd);//加入目标对等组
}
}
System.out.println("加入目标对等组成功......");
}
/**
* 启动平台有多种,在这里我用了我常用的方式,通过配置和getInterface()来得到netpg
* @return
*/
private PeerGroup startJxta() {
PeerGroup group = null;
try {
config = new NetworkConfigurator();
config.setName("LoginName");
config.setPrincipal("peer");
config.setPassword("password");
config.save();
group = new NetPeerGroupFactory().getInterface();
} catch (Exception e) {
System.out.println("启动平台失败");
e.printStackTrace();
System.exit(-1);//退出系统
}
return group;
}
//加入“群”
private void joinPeerGroup(PeerGroup dspg2, String login, String passwd) {
}
//搜索到该“群”
private PeerGroup discoveryPeerGroup(PeerGroup netpg2,
PeerGroupID satellaPID2) {
return null;
}
//创建带有用户名和密码的“群”
private PeerGroup createPeerGroup(PeerGroup netpg2, String groupName,
String login, String passwd) {
return null;
}
}
上面空的方法,会在以后发出。还没学习到这里的同学,也可以自己去通过学习,自己补上。 这样应该你应该发出来,让我学习一下啦。