欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Netty实例-简单的服务端-client实现,凝视具体

发布时间:2023/11/29 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Netty实例-简单的服务端-client实现,凝视具体 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

       书籍推荐:                                       实例代码 : http://download.csdn.net/detail/jiangtao_st/7677503
  • Netty Server端实现
    /*** * <p>* Netty Server Simple* </p>* * @author 卓轩* @创建时间:2014年7月7日* @version: V1.0*/public class NettyServer {private final int port = 8989;@Testpublic void nettyServer(){EventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup();try {ServerBootstrap serverBootstrap = new ServerBootstrap();serverBootstrap.group(bossGroup,workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 1024).childHandler(new ChildChannelHandler());//绑定端口、同步等待ChannelFuture futrue = serverBootstrap.bind(port).sync();//等待服务监听端口关闭futrue.channel().closeFuture().sync();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//退出,释放线程等相关资源bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}}private class ChildChannelHandler extends ChannelInitializer<SocketChannel>{@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new SimpleServerHandler());}}}
  • Netty Client 实现

    /*** * <p>* NettyClient 实现* </p>* * @author 卓轩* @创建时间:2014年7月7日* @version: V1.0*/ public class NettyClient {public void connect(int port,String host){EventLoopGroup group = new NioEventLoopGroup();try {Bootstrap bootstrap = new Bootstrap();bootstrap.group(group).channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true).handler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new SimpleClientHandler());}});//发起异步链接操作ChannelFuture channelFuture = bootstrap.connect(host, port).sync();channelFuture.channel().closeFuture().sync();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//关闭,释放线程资源group.shutdownGracefully();}}@Testpublic void nettyClient(){new NettyClient().connect(8989, "localhost");}}

  • ServerHander 处理程序 

    /*** * <p>* Server接收消息处理Handler* </p>* * @author 卓轩* @创建时间:2014年7月7日* @version: V1.0*/ public class SimpleServerHandler extends ChannelInboundHandlerAdapter {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf = (ByteBuf)msg;byte [] req = new byte[buf.readableBytes()];buf.readBytes(req);String message = new String(req,"UTF-8");System.out.println("Netty-Server:Receive Message,"+ message);} }

  • ClientHander 处理程序

    /*** * <p>* Client Handler* </p>* * @author 卓轩* @创建时间:2014年7月7日* @version: V1.0*/ public class SimpleClientHandler extends ChannelInboundHandlerAdapter {private ByteBuf clientMessage;public SimpleClientHandler() {byte [] req = "Call-User-Service".getBytes();clientMessage = Unpooled.buffer(req.length);clientMessage.writeBytes(req);}@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {ctx.writeAndFlush(clientMessage);}@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf = (ByteBuf)msg;byte [] req = new byte[buf.readableBytes()];buf.readBytes(req);String message = new String(req,"UTF-8");System.out.println("Netty-Client:Receive Message,"+ message);}@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {ctx.close();} }

  • 总结

    以上是生活随笔为你收集整理的Netty实例-简单的服务端-client实现,凝视具体的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。