使用步骤:
1,创建一个acceptor
//创建一个NioSocketAcceptor
NioSocketAcceptor acceptor = new NioSocketAcceptor();
2,设置处理器
//设置处理器
acceptor.setHandler(new SocketHandler());
3,绑定端口
acceptor.bind(new InetSocketAddress(8000));
4,添加滤镜
//添加滤镜
acceptor.getFilterChain().addLast("textLineCode",new ProtocolCodecFilter(new TextLineCodecFactory()));
5,SocketHandler()
public class SocketHandler extends IoHandlerAdapter {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);
System.out.println("message Received");
// IoBuffer buffer = (IoBuffer) message;
//
// String str = new String(buffer.array(),"UTF-8");
String line = (String) message;
System.out.println(line);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
super.messageSent(session, message);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
super.sessionCreated(session);
System.out.println("session Created");
}
}
自定义滤镜
1,新建StringFilter类继承IoFilterAdapter
2,重写messageReceive方法,在此方法里定义滤镜功能
@Override
public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
IoBuffer buffer = (IoBuffer) message;
String str = new String(buffer.array(),"UTF-8").trim();
//将str传到下一个滤镜
super.messageReceived(nextFilter, session, str);
}
3,主函数添加自定义滤镜
//添加自定义滤镜
acceptor.getFilterChain().addLast("StringFilter",new StringFilter());