一直做的安卓原生开发,说来真的惭愧。。。有很长一段时间socket编程用的是原生的api,苦不堪言。。。
在一大佬的提点下,让我多看各类java框架,认识到啥才叫“不要重复造轮子”。
服务器端样板代码:
// 监听线程
NioEventLoopGroup bossGroup = new NioEventLoopGroup();
// 接入连接线程
NioEventLoopGroup workerGroup = new NioEventLoopGroup();
// 服务端c位对象
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap
//线程模型
.group(bossGroup, workerGroup)
//指定IO类型
.channel(NioServerSocketChannel.class)
//还无法理解。
.childHandler(new ChannelInitializer<NioSocketChannel>() {
protected void initChannel(NioSocketChannel ch) {
ch.pipeline().addLast(new StringDecoder());
ch.pipeline().addLast(new SimpleChannelInboundHandler<String>() {
@Override
protected void channelRead0(ChannelHandlerContext ctx, String
msg){
//接收到的消息
}
}
}
});
//绑定端口
serverBootstrap.bind(10086);
客户端接入服务端时,此时没有发送消息,ChannelInboundHandler 的回调顺序
on handlerAdded
on channelRegistered
on channelActive
//todo ...