1.客户端第一次连接能进入到handler的方法中,但是一旦这个客户端关闭了连接,那么重新连接的时候就无法再进入到server的handler中了,需要重启server之后才能再次进入。这时候,可以看一下设置handler的方式
原代码:
serverBootstrap.childHandler(new MsgHandler());
修改之后:
serverBootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
socketChannel.pipeline().addLast(new MsgHandler());
}
});
2.服务器端向客户端发送数据,客户端接收不到。这时候,可以确认一下ctx.write()方法中传递的参数是不是ByteBuf类型
原代码:
ctx.writeAndFlush(data);
修改之后:
ByteBuf responseBuf=Unpooled.copiedBuffer(data);
ctx.writeAndFlush(responseBuf);