25,985
社区成员
发帖
与我相关
我的任务
分享
private static Logger log = Logger.getLogger(ServerMain.class.getName());
private static final int PORT = 11104;
public static void main(String[] args){
IoAcceptor acceptor;
try{
acceptor = new NioSocketAcceptor();
DefaultIoFilterChainBuilder builder = acceptor.getFilterChain();
//过滤器的位置很重要,在这里因为放到了第一个位置,它会记录原始字节码数据
LoggingFilter lf = new LoggingFilter();
builder.addLast("logger", lf);
//设置解码器
builder.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(
Charset.forName("GBK"))));
//进行配置信息的设置
acceptor.getSessionConfig().setReadBufferSize(10);
//session配置
IoSessionConfig sessionConfig = acceptor.getSessionConfig();
//sessionConfig.setMaxReadBufferSize(1024*100);
//读写通道10秒后无操作进入空闲状态
sessionConfig.setIdleTime(IdleStatus.BOTH_IDLE, 10);
//设置处理器
acceptor.setHandler(new ServerHandler());
//绑定本地端口
acceptor.bind(new InetSocketAddress(PORT));
}catch(Exception e){
e.printStackTrace();
}
log.info("main thread exit!");
}
public class ServerHandler extends IoHandlerAdapter {
private final Logger log = Logger.getLogger(ServerHandler.class.getName());
@Override
public void sessionCreated(IoSession session) throws Exception {
log.log(Level.INFO, "........................session created");
super.sessionCreated(session);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
log.log(Level.INFO, "........................session opened");
session.write("12345");
super.sessionOpened(session);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
log.log(Level.INFO, "........................session closed");
super.sessionClosed(session);
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
log.log(Level.INFO, "........................session idle");
super.sessionIdle(session, status);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
log.log(Level.INFO, "........................session exception");
log.log(Level.WARNING,cause.getMessage());
super.exceptionCaught(session, cause);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
log.log(Level.INFO, "........................message received");
log.log(Level.INFO, message.toString());
super.messageReceived(session, message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
log.log(Level.INFO, "........................message sent");
super.messageSent(session, message);
}
}
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",11104);
OutputStream os = socket.getOutputStream();
os.write("abcdef".getBytes());
os.flush();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
}
}