首页>代码>Netty框架整合五种编解码示例>/netty-endecode/src/main/java/com/example/demo/client2/DelimiterbaseClient.java
package com.example.demo.client2; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.DelimiterBasedFrameDecoder; import io.netty.handler.codec.string.StringDecoder; /** * DelimiterBasedFrameDecoder半包处理 * @author 程就人生 * @date 2019年10月26日 */ public class DelimiterbaseClient { public void connect(int port, String host){ //客户端Nio线程组 EventLoopGroup group = new NioEventLoopGroup(); try{ Bootstrap bootstrap = new Bootstrap(); //线程组设置为非阻塞 bootstrap.group(group).channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true) .handler(new ChannelInitializer<SocketChannel>(){ @Override protected void initChannel(SocketChannel ch) throws Exception { //以特殊符号作为一个包的结束符 ByteBuf delimiter = Unpooled.copiedBuffer("$_".getBytes()); ch.pipeline().addLast(new DelimiterBasedFrameDecoder(1024, delimiter)); //字符串转对象 ch.pipeline().addLast(new StringDecoder()); ch.pipeline().addLast(new DelimiterbaseClientHandler()); } }); //建立连接 ChannelFuture channelFuture = bootstrap.connect(host, port); //等待服务端监听端口关闭 channelFuture.channel().closeFuture().sync(); }catch(Exception e){ e.printStackTrace(); }finally{ //优雅退出 group.shutdownGracefully(); } } public static void main(String[] argo){ new DelimiterbaseClient().connect(8080, "localhost"); } }
最近下载更多
最近浏览更多
1909741473 LV8
2月19日
sunlzh888888 LV29
2023年9月12日
微信网友_6491062177157120
2023年5月25日
暂无贡献等级
yinyun1985 LV14
2022年10月31日
youwuzuichen LV10
2022年10月28日
1358849392 LV21
2022年10月21日
Killah LV9
2022年9月5日
no1xijin
2022年8月1日
暂无贡献等级
林间听风 LV10
2022年4月11日
xp95323 LV14
2022年1月25日