两Peer之间如何通过 JxtaBidiPipe相互通信
JxtaBidiPipe是通过巧妙的实现InputPipe和OutputPipe来完成双向通信的。通过JxtaBidiPipe方式进行双向通信,需要用到两个类:JxtaServerPipe和JxtaBidiPipe。实际完成通信任务的是JxtaBidiPipe类。但是双方通信前需要建立起这个连接,因此就用到了JxtaServerPipe类:该类首先站在那里等待连接请求,当有某人要求连接时,双方就开始建立实际的双向连接,也就是JxtaBidiPipe类开始生成并工作了。通信的双方我们暂且把一个称作“服务器端”,另一个称作“客户端”,下面我描述他们的通信过程,你就明白我这样称呼是有道理的。它们的通信过程是:
1、
服务器端先运行,它自然获得了
NetworkManager
和
PeerGroup
等对象。紧接着开始正式工作了:
它首先应获得一个JxtaServerPipe的实例:
JxtaServerPipe serverPipe = new JxtaServerPipe(netPeerGroup,
pipeAdv
);
它的作用是开始等待随时有某个客户端前来要求通信。获得实例时需要两个参数,一个netPeerGroup是服务器 端平台的默认对等组。另一个
pipeAdv
是一个管道通告
PipeAdvertisement
的对象。要注意在客户端也要用到这个相同的通告,这一点同InputPipe、OutputPipe的情况相同。
2、
然后调用语句:
JxtaBiDiPipe bi
di
pipe = serverPipe.accept()
;
这时候服务器端就开始等待客户端的连接请求了。当然,线程也会在此阻塞住。任何时候某客户端发出连接请求被服务器端的这句所接收,则获得了
JxtaBiDiPipe
的对象
bi
di
pipe
。此时线程自然结束,下面就可以使用这个
JxtaBiDiPipe
进行双向通信了。
3、
在客户端方面,同样,在
JXTA
平台启动后,
自然也获得了
NetworkManager
和
PeerGroup
等对象。这时候开始正式工作了:通过语句
JxtaBiDiPipe
bi
di
pipe =
new
JxtaBiDiPipe(
peergroup
,
pipeAdv
, 20000,
this
,
true
);
开始向服务器端发起连接请求,如第2步所述,服务器端本来已经在那里等待这个请求了。当收到这个请求后,服务器端和这里的客户端就都得到了这个
JxtaBiDiPipe
类的对象了,它们就开始通过这个对象进行双向通信。在说明如何进行双向通信之前,我先解释 一下刚才双方是如何“握手”到一起的:
在第1步中服务器端创建了
JxtaServerPipe 类的对象时有一个参数就是
pipeAdv
,而在客户端申请连接(即本步中创建
JxtaBiDiPipe
的对象
)也有一个参数
pipeAdv
,这就是双方联系的纽带。这是一个管道通告,只要双方通过这个相同的通告来建立连接,那么它们就是可以“走到一起的”。
4、
双方建立了连接后,就可以通过它们所共有的
JxtaBiDiPipe
的对象
bi
di
pipe
进行通信了。当双方任何谁想要发送消息时,就先将要发送的消息封装成一个Message对象,然后通过语句:
bi
di
pipe
.sendMessage(msg)发送给对方了。
5、
那么双方如何接收消息呢?因为消息是随时可以到来的,所接收一定是异步的了。这里就需要用到“消息监听器”了,具体来说是:
第一、
先将双方的类实现消息监听接口,例如类的声明可以是:
public class JxtaBidiPipeExample implements PipeMsgListener{}
第二、
当然,实现了这个监听接口后,自然就要求你必须实现一个方法了,那就是方法:
public
void
pipeMsgEvent(PipeMsgEvent event) {
}。任何时候有消息到来时,这个方法就被自动调用。所以,你要如何处理所接收的消息,就在这个方法里处理就可以了。具体来说一般有两步:
Message msg = event.getMessage()
和
MessageElement msgElement = msg.getMessageElement(
"MSG"
);
最后,通过语句:
msgElement
.toString()
就得到了消息内容了。
分享到:
相关推荐
Peer-to-Peer SimulatorsPeer-to-Peer SimulatorsPeer-to-Peer SimulatorsPeer-to-Peer Simulators
p2p,网络,peer-to-peer,p2p,网络,peer-to-peer
Peer to Peer Replication - Chs
Peer to Peer ( P2P ) 综述
peer to peer原版教程 p2p技术与应用
Peer-to-Peer Computing,P2P经典著作
这是一个peer to peer的视频流系统. 该系统采用RTP协议,因此与某些采用http/ftp协议进行传输的系统不同,本系统在视频流下载的过程中就可以同时观看
Peer-to-Peer File Sharing Gnutella Style
P2P优秀论文_主动peer-to-peer网络架构
该程序可以快速读取PEER网站下载的地震波,用于地震动分析。
Title:Peer to Peer Application Development: Cracking the Code URL:http://www.amazon.com/exec/obidos/ASIN/0764549049/qid%3D1041485413/sr%3D11-1/ref%3Dsr%5F11%5F1/104-2059835-4815920 ISBN:0764549049 ...
A Survey of Peer-to-Peer Network SimulatorsA Survey of Peer-to-Peer Network Simulators
Peer-to-Peer Systems and Applications LNCS 3485, 658 pages, ISBN 3-540-29192-X, Springer, Sept. 2005
An Analysis of the Skype Peer to Peer Internet Telephony Protocol
The Handbook of Peer-to-Peer Networking is intended to provide readers with a comprehensive reference for the most current developments in the field. It offers broad coverage P2P networking with fifty...
peer网站爬虫代码(peer1,peer2)
The Handbook of Peer-to-Peer Networking is a comprehensive and unified repository of the various models, applications, methodologies, trends, and challenges of peer-to-peer computing, making it an ...
论文:PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake 论文结构: Introduction Coin Age Proof-of-Stake Minting based on Proof-of-Stake Main Chain Protocol Checkpoint: Protection of History ...