netty
netty
JAVA道人
我宁愿做错,也不愿什么都不做.
展开
-
netty开发tcp服务器最好不要用分隔符DelimiterBasedFrameDecoder这种分包方式
我们都知道,tcp通讯属于流传输,对于上面承载的业务协议栈是不做分包处理的,所以大量客户端给服务器发送数据,就会有黏包现象,所以必须分包,反之,服务器给客户端发数据,也会黏包。netty提供了很多decoder用来分包,目前个人觉得效率最高,最好的方式还是LengthFieldBasedFrameDecoder,没有之一。很多人刚开始做开发经验不足,按照教科书上的指点,使用了分隔符作为分包机制,其实这种方式效率非常低,比较“愚蠢”,不管是服务器还是客户端,因为你作为接收端,不知道tcp流里面什么时候分隔原创 2021-04-28 14:19:24 · 291 阅读 · 0 评论 -
netty | 半包和粘包现象
import io.netty.bootstrap.Bootstrap;import io.netty.channel.Channel;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInitializer;import io.netty.channel.SimpleChannelInboundHandler;imp原创 2021-03-17 17:10:14 · 105 阅读 · 0 评论 -
netty创建ByteBuf
ByteBuf buf = ByteBufAllocator.DEFAULT.heapBuffer(len)原创 2021-03-17 11:30:53 · 165 阅读 · 0 评论 -
netty | Channel.write()和ChannelHandlerContext.write()的区别
ChannelPipeline处理ChannelHandler的顺序:pipeline中的handler 处理的请求分为两类: 读 和 写对于读请求 : 从handler链表的 head 到 tail 挨个的处理, 跳过 ChannelOutboundHandler对于写请求 : 从handler链表的 tail 到 head 挨个的处理, 跳过 ChannelInboundHandler1 调用 Channel.write(), 会直接调用ChannelPipeline.write() @原创 2021-02-27 10:49:04 · 644 阅读 · 0 评论 -
netty简单的转发例子
maven <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.36.Final</version> </dependency>netty引导类 import java.net.InetSocketAddress;import io.netty.boo原创 2021-01-27 21:11:26 · 939 阅读 · 1 评论 -
netty writeAndFlush不起作用
请看下面的发送writeAndFlush @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf bb = (ByteBuf) msg; ctx.writeAndFlush(bb); ctx.writeAndFlush("end"); ctx.writeAndFlush(new byte[] {1,2,3}); }发现他能返回Byt原创 2021-01-26 15:28:21 · 7563 阅读 · 4 评论 -
netty入门启动
maven <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>${netty.version}</version> </dependency>netty启动类import io.netty.bootstrap.ServerBootstrap;import io.原创 2021-01-26 14:57:04 · 263 阅读 · 0 评论