netty socket 客服端编程


package com.ming.netty.nio;  2  3 import io.netty.bootstrap.Bootstrap;  4 import io.netty.channel.ChannelFuture;  5 import io.netty.channel.ChannelInitializer;  6 import io.netty.channel.ChannelOption;  7 import io.netty.channel.EventLoopGroup;  8 import io.netty.channel.nio.NioEventLoopGroup;  9 import io.netty.channel.socket.SocketChannel; 10 import io.netty.channel.socket.nio.NioSocketChannel; 11 12 /** 13  * netty 客户端模拟 14  * @author mingge 15  * 16 */ 17 public class TimeClient { 18 19 20 public static void main(String[] args) throws Exception{ 21 new TimeClient().connect("127.0.0.1", 8400); 22  } 23 24 public void connect(String addr,int port) throws Exception{ 25 EventLoopGroup group=new NioEventLoopGroup(); 26 try { 27 Bootstrap b=new Bootstrap(); 28 b.group(group).channel(NioSocketChannel.class) 29 .option(ChannelOption.TCP_NODELAY, true) 30 .handler(new ChannelInitializer<SocketChannel>() { 31 public void initChannel(SocketChannel ch) throws Exception{ 32 ch.pipeline().addLast(new TimeClientHandler()); 33  } 34  }); 35 ChannelFuture f=b.connect(addr,port); 36 f.channel().closeFuture().sync();//等待客户端关闭连接 37 } catch (Exception e) { 38 // TODO: handle exception 39 }finally{ 40  group.shutdownGracefully(); 41  } 42  } 43 }
复制代码
复制代码
 1 package com.ming.netty.nio;  2  3 import io.netty.buffer.ByteBuf;  4 import io.netty.buffer.Unpooled;  5 import io.netty.channel.ChannelHandlerAdapter;  6 import io.netty.channel.ChannelHandlerContext;  7  8 public class TimeClientHandler extends ChannelHandlerAdapter {  9 10 private final ByteBuf byteMsg; 11 12 public TimeClientHandler() { 13 byte[] req="我是请求数据哦".getBytes(); 14 byteMsg=Unpooled.buffer(req.length); 15  byteMsg.writeBytes(req); 16  } 17 18  @Override 19 public void channelActive(ChannelHandlerContext ctx) throws Exception { 20  ctx.writeAndFlush(byteMsg); 21  } 22 23  @Override 24 public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { 25 ByteBuf buf=(ByteBuf)msg; 26 byte[] req=new byte[buf.readableBytes()]; 27  buf.readBytes(req); 28 String body=new String(req,"GBK"); 29 System.out.println("body:"+body); 30  } 31 32  @Override 33 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { 34 //释放资源 35  ctx.close(); 36  } 37 38 39 }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM