JXTA中两个对等点发现对方ID的途径

两个对等点要通过管道进行相互通信,那么它们必须都要知道这个管道的ID,如何使得两个对等点都知道这个ID呢?有一下几种途径:
1、 两个对等点是通过相同的管道通告文件来创建管道的。例如下例:
FileInputStream fis = new FileInputStream("e:\\pipe.adv");
pipeAdv=(PipeAdvertisement) AdvertisementFactory.newAdvertisement(MimeMediaType.TEXTUTF8, fis);
fis.close();
pipeIn = pipeSvc.createInputPipe(pipeAdv,this);
其中pipe.adv就是双方公用的通告文件,是符合通告文件格式的xml文件。

2、 在运行时一方发布自己的管道ID,另一方去发现这个ID。
3、 双方都使用一个互相知道的公共ID。
通过第一种方式创建输入通道时,有一定危险。因为很可能多个运行的Peer都使用这个相同的通告文件。这样,你就可能在同错误的Peer进行通信呢。
使用第二种方式就没有这种危险了,但是也有麻烦。一个问题是如何寻找发现。当一个Peer要同另一个Peer通信时,它首先需要寻找对方的管道通告。而要寻找对方的管道通告,就必须知道这个管道通告的某种信息,通常都是其“Name”属性。因此,当一个Peer在创建管道通告时,就需要注意考虑如何让你创建的这个管道通告能够被其它Peer发现。另一个问题就是当你搜索发现管道时候,也要考虑到已经被发布的管道通告的生命周期。默认情况下,发布在本地缓存的通告被保持365天,而远程发布的通告则被保持2小时。当你在发布一个通告时,一般还需要减少该时间,不过也可以加长该时间。

你可能感兴趣的:(xml)