JXTA 雙向通訊 可以通過 JxtaServerSocket /JxtaSocket和 JxtaServerPipe/JxtaBiDiPipe 來實(shí)現(xiàn) 其實(shí)現(xiàn)的過程非常的類是我們做FTP的時候所采用的ServerSocket/Socket機(jī)制,也就是服務(wù)斷監(jiān)聽客戶端連接的原理。以JxtaServerPipe為例,在服務(wù)端:
serverPipe = new JxtaServerPipe(eg.netPeerGroup,eg.pipeAdv);
serverPipe.setPipeTimeout(0);然后就是服務(wù)端的循環(huán)監(jiān)聽客戶端的連接
while (true) {
try {
JxtaBiDiPipe bipipe = serverPipe.accept();
if (bipipe != null ) {
System.out.println("JxtaBidiPipe accepted,sending 100 messages to the other end");
//Send a 100 messages
sendTestMessages(bipipe);
}
} catch (Exception e) {
}
}
在客戶端則是通過JxtaBiDiPipe 來進(jìn)行連接服務(wù)斷的操作:pipe = new JxtaBiDiPipe();
pipe.connect(eg.netPeerGroup,null,eg.pipeAdv,
180000,
// register as a message listener
eg);當(dāng)有消息來得時候就會觸發(fā) pipeMsgEvent(PipeMsgEvent event)事件