jxta即时通信连不通啊,急

这是客户端的代码 
package primecruncher; 

import net.jxta.peergroup.PeerGroup; 
import net.jxta.peergroup.PeerGroupFactory; 
import net.jxta.endpoint.StringMessageElement; 
import net.jxta.util.JxtaBiDiPipe; 
import net.jxta.discovery.DiscoveryService; 
import net.jxta.discovery.DiscoveryListener; 
import net.jxta.discovery.DiscoveryEvent; 
import net.jxta.pipe.PipeService; 
import net.jxta.pipe.PipeMsgListener; 
import net.jxta.exception.PeerGroupException; 
import net.jxta.protocol.DiscoveryResponseMsg; 
import net.jxta.protocol.PipeAdvertisement; 
import net.jxta.pipe.PipeMsgEvent; 
import net.jxta.rendezvous.RendezVousService; 
import net.jxta.endpoint.Message; 
import java.util.*; 
import net.jxta.endpoint.MessageElement; 
public class PrimeClient implements DiscoveryListener,PipeMsgListener{ 
  private static PeerGroup group; 
  private Message msg,msg1; 
  private static DiscoveryService discoSvc; 
  private static PipeService pipeSvc; 
  String b; 
  String xiaoxi;  
  PipeAdvertisement pipeAdvert; 
  private RendezVousService rdv; 
   
   
  public PrimeClient(){} 
  public static void main(String[] args) 
  { 
  PrimeClient cl = new PrimeClient(); 
try{ 
  cl.startJxta(); 
  cl.doDiscovery();  
  System.out.println("wuyichang"); 
  }catch(NullPointerException ee) 
  { System.out.println("yichang");} 

  } 
//初始化平台 
private void startJxta() { 

  try { 
  group = PeerGroupFactory.newNetPeerGroup();  
  discoSvc = group.getDiscoveryService(); 
  System.out.println("startJxta"); 
  pipeSvc = group.getPipeService();  
  } catch (PeerGroupException e) { 
  System.out.println("Can't create net peer group: " + 
  e.getMessage()); 
  System.exit(-1); 
  } 
  } 
//远程搜索 
private void doDiscovery() 
  { discoSvc.addDiscoveryListener(this); 
   
  int peerQueryID = discoSvc.getRemoteAdvertisements(null, DiscoveryService.ADV, 
  null, null, 5); 
  System.out.println("sousuo"); 
  } 
//发现搜索处理 
public void discoveryEvent(DiscoveryEvent ev)  
{ DiscoveryResponseMsg res = ev.getResponse(); 
  Enumeration er = res.getAdvertisements(); 
  if (er != null ) { 
  while (er.hasMoreElements()) 
  { 
  pipeAdvert = (PipeAdvertisement)er.nextElement(); 
  System.out.println("faxianguanggao"); 
  } 
  } 
//连接管道发送消息 
  try{ 
  JxtaBiDiPipe bidipipe = new JxtaBiDiPipe(group,pipeAdvert,20000,this ,true ); 
  msg = new Message();  
  StringMessageElement sme = new StringMessageElement("SenderMessage", "ReturnCred", null); 
  msg.addMessageElement(null, sme); 
  StringMessageElement sme1 = new StringMessageElement("a", group.getPeerGroupID().toString(), null); 
  msg.addMessageElement(null, sme1); 
  StringMessageElement sme2 = new StringMessageElement("b", group.getPeerID().toString(), null); 
  msg.addMessageElement(null, sme2); 
  bidipipe.sendMessage(msg); 
  System.out.println("fasong"); 
  }catch(Exception e) 
  { 
  e.printStackTrace(); 
  System.out.println("not created"); 
  } 

//接收处理消息 
public void pipeMsgEvent(PipeMsgEvent ev) { 
  msg1 = ev.getMessage(); 
  MessageElement msgElement = msg1.getMessageElement(null, "SenderMessage"); 
  xiaoxi=msgElement.toString(); 
  System.out.println(xiaoxi); 
  if (msgElement.toString() == null) { 
  System.out.println("null msg received"); 
  } 


这是服务器方的代码。 
package primecruncher; 

import net.jxta.peergroup.PeerGroup; 
import net.jxta.peergroup.PeerGroupFactory; 
import net.jxta.endpoint.MessageElement; 
import net.jxta.discovery.DiscoveryService; 
import net.jxta.pipe.PipeID; 
import net.jxta.exception.PeerGroupException; 
import net.jxta.protocol.PipeAdvertisement; 
import net.jxta.document.*; 
import net.jxta.id.IDFactory; 
import net.jxta.pipe.PipeService; 
import net.jxta.endpoint.Message; 
import java.io.FileInputStream; 
import net.jxta.util.JxtaServerPipe; 
import net.jxta.util.JxtaBiDiPipe; 
import net.jxta.endpoint.StringMessageElement; 
import java.io.IOException; 
import java.io.FileOutputStream; 
import net.jxta.pipe.PipeMsgListener; 
import net.jxta.pipe.PipeMsgEvent; 
public class PrimePeer implements PipeMsgListener { 
  private PipeAdvertisement pipeAdv; 
  private JxtaServerPipe serverPipe; 
  private final static String SenderMessage = "pipe_tutorial"; 
  private static PeerGroup group; 
  private static DiscoveryService discoSvc; 
  private static final String PIPE_ADV_FILE = "primeserver_pipe.adv"; 
  private final static String ReturnCred = "Authentication credential "; 
  private final static String peerGroupID = "peer group ID "; 
  private final static String peerID = "peer ID "; 
  private JxtaBiDiPipe bipipe; 
  private String xiaoxi; 
  private PipeService pipeSvc; 
  public static void main(String[] args) { 

  PrimePeer pp = new PrimePeer(); 

  pp.startJxta(); 

  pp.doAdvertise(); 

  } 

  public PrimePeer() { 

  } 
//初始化平台 
  private void startJxta() 
  { 

  try { 

  group = PeerGroupFactory.newNetPeerGroup();//获取GROUP引用 

  discoSvc = group.getDiscoveryService(); 
   
  pipeSvc = group.getPipeService(); 
   

  } catch (PeerGroupException e) { 

  System.out.println("Cannot create Net Peer Group: " + e.getMessage( 

)); 

  System.exit(-1); 

  } 
  } 
//创建并发布广告  
  private void doAdvertise() {  
  try { 
  FileInputStream is = new FileInputStream(PIPE_ADV_FILE); 
  pipeAdv = (PipeAdvertisement) AdvertisementFactory.newAdvertisement(MimeMediaType.XMLUTF8, is); 
  is.close(); 
   
  System.out.println("ok here"); 
  //discoSvc.publish( pipeAdv, DiscoveryService.ADV); 
   
   
  System.out.println("ok here too"); 
  // we want to block until a connection is established 
   
  } catch (Exception e) { 
  pipeAdv = (PipeAdvertisement)AdvertisementFactory. newAdvertisement( 

  PipeAdvertisement.getAdvertisementType()); 

  PipeID pid = IDFactory.newPipeID(group.getPeerGroupID()); 
  pipeAdv.setName("serve"); 
  pipeAdv.setPipeID(pid); 

  //save pipeAd in file 

  Document pipeAdDoc = pipeAdv.getDocument(new MimeMediaType ("text/xml")); 

  try { 

  FileOutputStream os = new FileOutputStream(PIPE_ADV_FILE); 

  pipeAdDoc.sendToStream(os); 

  os.flush(); 

  os.close(); 

  System.out.println("Wrote pipe advertisement to disk."); 

  } catch (IOException ex) { 

  System.out.println("Can't save pipe advertisement to file " + 

  PIPE_ADV_FILE); 

  System.exit(-1); 
  System.out.println("failed to read/parse pipe advertisement"); 
  e.printStackTrace(); 
  System.exit(-1); 
  } 

  } 
  try { 

   

  discoSvc.remotePublish(pipeAdv, DiscoveryService.ADV); 

  System.out.println("Published module spec adv"); 

  } catch (Exception e) { 

  System.out.println("Trouble publishing module spec adv: " + 

  e.getMessage()); 



//等待客户端连接 
while(true){ 
  System.out.println("starting ServerPipe"); 
  try {  
  serverPipe = new JxtaServerPipe(group, pipeAdv); 
  serverPipe.setPipeTimeout(0); 
  System.out.println("starting"); 
  bipipe = serverPipe.accept(); 
  System.out.println("starting1 "); 
  if (bipipe != null ) { 
  System.out.println("BiDi Pipe created"); 
   
  receiveAndSendTestMessage(bipipe); 

  } 
  } catch (Exception e) { 
  e.printStackTrace(); 
  System.out.println("not created"); 
  return; 
  } 
   
  } 

  } 
   
//创建消息并发送 
  private void receiveAndSendTestMessage (JxtaBiDiPipe pipe) { 
  try { 
   
  Message msg = new Message();  
  StringMessageElement sme = new StringMessageElement(SenderMessage, ReturnCred, null); 
  msg.addMessageElement(null, sme); 
  StringMessageElement sme1 = new StringMessageElement(peerGroupID, group.getPeerGroupID().toString(), null); 
  msg.addMessageElement(null, sme1); 
  StringMessageElement sme2 = new StringMessageElement(peerID, group.getPeerID().toString(), null); 
  msg.addMessageElement(null, sme2); 
  System.out.println("Sending back 'Hello World'"); 
  pipe.sendMessage(msg); 
  } 
  catch (Exception ie) { 
  ie.printStackTrace(); 
  } 
  } 
   
//接收处理消息  
public void pipeMsgEvent(PipeMsgEvent ev) { 
  Message msg = ev.getMessage(); 
  MessageElement msgElement = msg.getMessageElement(null, SenderMessage); 
  xiaoxi=msgElement.toString(); 
  System.out.println(xiaoxi); 
  // Get message 
  if (msgElement.toString() == null) { 
  System.out.println("null msg received"); 
  } 
   

   

   
 
 
回复次数: 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值