2021-03-03

天气:晴

今天学习内容

一、log4j整合到netty

1.引入依赖(maven)
2.配置log4j的配置文件
在这里插入图片描述

二、TCP拆粘包

网络信息的传输是无消息保护边界的,发送多个信息的时候,接收方无法保证接受的信息如何分解为一个个完整的个体,有时候会吧两个信息接到一起,这就是粘包,把一个信息分段接受这就是拆包

三、自定义协议解决拆粘包问题

使用自定义协议+编解码器来解决,关键就是要解决服务器端每次读取数据长度的问题,避免服务器多读少读数据。

1.编写基本的客户端服务端类
2.编写一个协议包类MessageProtocol,包含长度length属性和文本content属性,提供get,set方法
3.在handler里的channelActive方法中发送数据的时候计算出数据的byte[]长度,赋值给协议包,传递给接收方按照该协议读取
4.因为传送的是一个协议包类,要读取协议包就需要一个对应的编解码类

这里的步骤:
传递的信息——》编码封装信息为MessageProtocol——》传递接收——》解码MessageProtocol的文本属性——》显示在接收方

四、netty服务器启动源码剖析

1.创建的bossgroup不传参数,会获取计算机的核数,创建核*2的线程池

2.handler链表添加新的handler时候,是加载tail前一个位置

newCtx.prev = prev;
newCtx.next = tail;
prev.next = newCtx;
tail.prev = newCtx;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值