服务端
1.代码
new ServerBootstrap().group(new NioEventLoopGroup()) // 1.channel(NioServerSocketChannel.class) // 2.childHandler(new ChannelInitializer<NioSocketChannel>() { // 3protected void initChannel(NioSocketChannel ch) {ch.pipeline().addLast(new StringDecoder()); // 5ch.pipeline().addLast(new SimpleChannelInboundHandler<String>() { // 6@Overrideprotected void channelRead0(ChannelHandlerContext ctx, String msg) {System.out.println(msg);}});}}).bind(8080); // 4
2.解析
1.创建group事件循环组,用来处理NIO事件
2.选择服务 Scoket 实现类, NioServerSocketChannel 表示基于 NIO 的服务器端实现
3,5,6.表示处理过程,我们可以把channel想象成一个车间,而pipeline就是一道流水线,handler就是流水线上的工序,用来处理信息,这个工序可以是自定义的,例如6;5用于将客户端发来的信息从字节解码成utf-8
4.绑定端口
客户端
1.代码
new Bootstrap().group(new NioEventLoopGroup()).channel(NioSocketChannel.class).handler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {nioSocketChannel.pipeline().addLast(new StringEncoder());}}).connect("127.0.0.1",8100)//1.sync()//2.channel()//3.writeAndFlush("hello netty");//4
2.解释
前面的代码理解和服务端相似
1.表示要连接的服务端地址
2.sync表示同步阻塞,主线程只有当连接成功后才能继续向下执行
3.拿到furturechannel对象
4.向channel写入信息并立即刷出,如果不刷出,信息可能停滞在缓冲区中而没发给服务端