MMO+Java:一、Java服务器相关基础知识:4、基于Netty的TCP服务器开发

一、Netty 的启动与管道初始化工厂

(1)导入netty的依赖包

代码结构图:
在这里插入图片描述

所有的代码可以在git上获取。地址:https://github.com/tudouANDdigua/UnityJavaServer.git

(2)netty启动

  1. 配置group(监听工作组,IO工作组)
  2. 配置channel():采用NIO: NioServerSocketChannel
  3. 配置最多可同时接入的连接请求数目
    option(ChannelOption.SO_BACKLOG, 1024)
    在这里插入图片描述
  4. 配置Channel的初始化工厂
    在这里插入图片描述
    IO 事件处理对象(连接进来,连接断开,有数据可读, 连接异常)
    数据编码解码器
  5. 绑定服务器端口开启监听。注意:端口不要被占用

(3)连接测试

  1. 接入连接
    客户端会发起连接, netty会建立建立
    调用初始化工厂里面一个initChannel方法,来初始化配置新建立的channel
    调用IO Event对象channelActive
    用户接入进来了
  2. 接收数据
    1:当连接建立以后,channel建立好以后,我们的客户端发送数据过来,channel就会拿到数据
    2: netty就会去找配置channel时候解码器对象,StringDecoder
    3:netty就会遍历list out, 通知管道的ioEvent处理对象,调用这个对象的
    我们就收到了某个客户端给我们发送的message
  3. 接收数据
    发送数据
    WriteAndFlush
    1:写入一个对象给channel
    2: channel 找管道里面的配置的编码对象
    StringEncoder
    3:调用编码器的编码函数,来将object对象—》二进制数据 在这里插入图片描述
    4:底层给你发出去
  4. 连接断开
    1: 管道会被中断,通知管道的IO Event处理对象,调用它的固定的函数
    在这里插入图片描述
    2: 通知IO Event 这个管道不可用了 在这里插入图片描述
  5. 客户端代码我采用node来写,node安装
    node.js中文网
    下载对应的就可以了
    在这里插入图片描述

二、为什么Netty可以做到高并发

(1) 多线程监听接入socket

(2)多线程处理IO

在这里插入图片描述

(3)注意:不要阻塞netty 的IO线程,处理业务逻辑,尽量调用别的线程

三、Netty结构图详解

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值