Netty之握手和安全认证
握手的发起是在客户端和服务端TCP链路建立成功通道激活时,握手消息的接入和安全认证在服务端处理。
一. 握手认证的客户端ChannelHandler
握手认证的客户端ChannelHandler,用于在通道激活时发起握手请求
package aggrement;
import java.awt.TrayIcon.MessageType;
importio.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext;
/*
* 握手认证客户端,用于在通道激活时发起握手请求
*/
public class LoginAuthReqHandler extendsChannelHandlerAdapter{
/*
* 当客户端跟服务端TCP三次握手成功之后,由客户端构造握手请求消息发送给服务端
* 由于采用IP白名单认证机制,因此,不需要携带消息体,消息体为空,消息类型为3
* 握手请求消息,握手请求发送之后,按照协议规范,服务端需要返回握手应答消息
* (non-Javadoc)
* @seeio.netty.channel.ChannelHandlerAdapter#channelActive(io.netty.channel.ChannelHandlerContext)
*/
publicvoid channelActive(ChannelHandlerContext ctx) throws Exception{
ctx.writeAndFlush(buildLoginReq());
}
/*
* 对握手应答消息进行处理,首先判断消息是否是握手应答消息
* 如果不是,直接透传给后面的ChannelHandler进行处理;首先判断是握手应答消息
* 对应答结果进行判断
* (non-Javadoc)
* @seeio.netty.channel.ChannelHandlerAdapter#channelRead(io.netty.channel.ChannelHandlerContext,java.lang.Object)
*/
publicvoid ch