JAVA:yanf4j引入了客户端非阻塞API
来源:优易学  2011-2-23 14:52:36   【优易学:中国教育考试门户网】   资料下载   IT书店

  yanf4j发布一个0.50-beta2版本,这个版本最重要的改进就是引入了客户端连接非阻塞API,主要最近的工作要用到,所以添加了。两个核心类TCPConnectorController和UDPConnectorController分别用于TCP和UDP的客户端连接控制。例如,现在的UDP echo client可以写成:
  //客户端echo handler
  classEchoClientHandlerextendsHandlerAdapter{
  publicvoidonReceive(SessionudpSession,Objectt){
  DatagramPacketdatagramPacket=(DatagramPacket)t;
  System.out.println("recv:"+newString(datagramPacket.getData()));
  }
  @Override
  publicvoidonMessageSent(Sessionsession,Objectt){
  System.out.println("send:"+newString((byte[])t));
  }
  }
  //连接代码,并发送UDP包
  UDPConnectorControllerconnector=newUDPConnectorController();
  connector.setSoTimeout(1000);
  connector.setHandler(newEchoClientHandler());
  connector.connect(newInetSocketAddress(InetAddress.getByName(host),
  port));
  for(inti=0;i<10000;i++){
  Strings="hello"+i;
  DatagramPacketpacket=newDatagramPacket(s.getBytes(),s.length());
  connector.send(packet);
  }
  UDP不是面向连接的,因此connect方法仅仅是调用了底层DatagramChannel.connect方法,用来限制接收和发送的packet的远程端点。
  再来看看TCPConnectorController的使用,同样看Echo Client的实现:
  //客户端的echohandler
  classEchoHandlerextendsHandlerAdapter<String>{
  @Override
  publicvoidonConnected(Sessionsession){
  try{
  //一连接就发送NUM个字符串
  for(inti=0;i<NUM;i++)
  session.send(generateString(i));
  }catch(Exceptione){
  }
  }

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训