0_1321680533GbMv.gif (24.4 KB, 下载次数: 1244)
下载附件 保存到相册
8 年前 上传
public NioSocketAcceptor(Executor executor, IoProcessor<NioSession> processor) {} public NioSocketConnector(Executor executor, IoProcessor<NioSession> processor) {}
protected AbstractIoService(IoSessionConfig sessionConfig, Executor executor) { //省略部分代码 if (executor == null) { this.executor = Executors.newCachedThreadPool(); createdExecutor = true; } else { this.executor = executor; createdExecutor = false; } }
IoConnector connector = new NioSocketConnector(9); IoAcceptor acceptor = new NioSocketAcceptor(9);
private static final int DEFAULT_SIZE = Runtime.getRuntime().availableProcessors() + 1;
public SimpleIoProcessorPool(Class<? extends IoProcessor<S>> processorType, Executor executor, int size) { //省略部分代码 if (createdExecutor) { this.executor = Executors.newCachedThreadPool(); } else { this.executor = executor; } }
acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));
public class MinaTest { protected static Logger logger = LoggerFactory.getLogger(MinaTest.class); private static int PORT = 9999; public static void main(String[] args) { try { // 创建一个非阻塞的server端的Socket IoAcceptor acceptor = new NioSocketAcceptor(); // 设置过滤器 acceptor.getFilterChain().addLast("logger", new LoggingFilter()); acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8")))); acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool())); // 设置读取数据的缓冲区大小 acceptor.getSessionConfig().setReadBufferSize(2048); // 读写通道10秒内无操作进入空闲状态 acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10); // 绑定逻辑处理器 acceptor.setHandler(new MinaServerHandler()); // 绑定端口 acceptor.bind(new InetSocketAddress(PORT)); logger.info("服务端启动成功... 端口号为:" + PORT); } catch (Exception e) { logger.error("服务端启动异常....", e); e.printStackTrace(); } } }
public class MinaServerHandler extends IoHandlerAdapter { protected static Logger logger = LoggerFactory.getLogger(MinaServerHandler.class); public void exceptionCaught(IoSession session, Throwable cause) throws Exception { logger.error("服务端发送异常...", cause); } public void messageReceived(IoSession session, Object message) throws Exception { String msg = message.toString(); //如果是quit就关闭session退出 if ("quit".equals(msg)) { session.close(); } Date date = new Date(); session.write(date.toString()); } public void sessionCreated(IoSession session) throws Exception { logger.info("服务端与客户端创建连接..."); } }
0_1321680668icC9.gif (3.39 KB, 下载次数: 1222)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:M_Kingsunx 发表于 2016-02-24 18:01 我按照您的方法来做的 但是 总是在最后的logger.error()报错,提示我要添加cast to logger,求指教~
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.125000 second(s), 44 queries , Gzip On.