yanf4j引入了客户端非阻塞API - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-16
yanf4j引入了客户端非阻塞API时间:2011-06-12 BlogJava dennisyanf4j发布一个0.50-beta2版本,这个版本最重要的改进就是引入了客户端 连接非阻塞API,主要最近的工作要用到,所以添加了。两个核心类 TCPConnectorController和UDPConnectorController分别用于TCP和UDP的客户端 连接控制。例如,现在的UDP echo client可以写成: //客户端echo handler class EchoClientHandler extends HandlerAdapter { public void onReceive(Session udpSession, Object t) { DatagramPacket datagramPacket = (DatagramPacket) t; System.out.println ("recv:" + new String(datagramPacket.getData ())); } @Override public void onMessageSent(Session session, Object t) { System.out.println("send:" + new String((byte[]) t)); } } //连接代码,并发送UDP包 UDPConnectorController connector = new UDPConnectorController(); connector.setSoTimeout(1000); connector.setHandler (new EchoClientHandler()); connector.connect(new InetSocketAddress(InetAddress.getByName(host), port)); for (int i = 0; i < 10000; i++) { String s = "hello " + i; DatagramPacket packet = new DatagramPacket(s.getBytes(), s.length ()); connector.send(packet); } yanf4j引入了客户端非阻塞API(2)时间:2011-06-12 BlogJava dennisUDP不是面向连接的,因此connect方法仅仅是调用了底层 DatagramChannel.connect方法,用来限制接收和发送的packet的远程端点。 再来看看TCPConnectorController的使用,同样看Echo Client的实现: //客户端的echo handler class EchoHandler extends HandlerAdapter<String> { @Override public void onConnected(Session session) { try { //一连接就发送NUM个字符串 for (int i = 0; i < NUM; i++) session.send(generateString(i)); } catch (Exception e) { } } public String generateString(int len) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < MESSAGE_LEN; i++) sb.append(i); return sb.toString(); } @Override public void onReceive(Session session, String t) { //打印接收到字符串 if (DEBUG) System.out.println("recv:" + t); } } //...连接API,TCPConnectorController示例 Configuration configuration = new Configuration(); configuration.setTcpSessionReadBufferSize(256 * 1024); // 设置 读的缓冲区大小 TCPConnectorController connector = new TCPConnectorController (configuration, new StringCodecFactory()); connector.setHandler(new EchoHandler()); connector.setCodecFactory(new StringCodecFactory()); try { connector.Connect(new InetSocketAddress ("localhost", 8080)); } catch (IOExceptione) { e.printStackT |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于yanf4j引入了客户端非阻塞API - 编程入门网的所有评论