天天看点

JXTA中通过身份认证来加入“群”(一)

之前讲的加入“群”,即对等组。都是不用认证的,只要发现了该“群”,就可以加入“群”。但是这明显是不好的,不管管理上,还是从安全,或者内容上。所以我们要给“群”加上锁,只能让有钥匙的用户进入。

日常方面我们都是使用密码来使用锁匙,在本文我也正是要讲的是使用密码来给“群”上锁,这样,以后有谁想加入该“群”,必须要有该“群”的的钥匙“密码”才行。

在这里本来打算利用一次全写完,可是考虑到,如果把所有内容一次给出,看来麻烦,而且对于理解也不太好。所以会分次给出。在这篇我只想讲讲如何通过身份认证加入“群”的过程。给出部分代码,代码也加上了必要的注释,希望大家可以看明白过程就行。

代码的实现过程,将后续慢慢发出。

 在这里只要注意构造方法里程序运行的顺序,就可以看出该过程。

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("加入目标对等组成功......");

 }

 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;

 }

}

上面空的方法,会在以后发出。还没学习到这里的同学,也可以自己去通过学习,自己补上。 这样应该你应该发出来,让我学习一下啦。

继续阅读