apache mina  是较为流行的基于NIO的TCP/IP网络框架,她拥有高性能,以及高的实用性。

可以用于网页游戏服务器,手机游戏服务器。也可作为推送服务器使用。

版本:2.0.x

SocketAcceptor acceptor = new NioSocketAcceptor(); //这个构造函数有个参数,是processCount指的是core process数,一般是电脑的 CPU核数 + 1。

LoggingFilter log = new LoggingFilter();

log.setMessageSentLogLevel(LogLevel.DEBUG);

acceptor.getFilterChain().addLast("logger", log);

acceptor.getSessionConfig().setWriteTimeout(10000);

acceptor.getSessionConfig().setWriterIdleTime(100000);

TextLineCodecFactory lineFactory = new TextLineCodecFactory(

Charset.forName("UTF-8"));

lineFactory.setDecoderMaxLineLength(Integer.MAX_VALUE);

lineFactory.setEncoderMaxLineLength(Integer.MAX_VALUE);

acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineFactory));

acceptor.getFilterChain().addLast("exceutor", new ExecutorFilter());acceptor.setHandler(new MyDataHandler()); //自定义数据处理 handler

acceptor.getFilterChain().addLast("exceutor", new ExecutorFilter());

默认的如果不设置 exceutor,就使用NioSocketAcceptor() 默认的processCount作为主线程数。

ExecutorFilter 默认为 DEFAULT_MAX_POOL_SIZE = 16;

如果在

MyDataHandler做了阻塞的话,最多16个线程 就无法再接受新的线程。

接收更多的线程:

new ExecutorFilter(Executors.newCachedThreadPool()); //线程数。长连接阻塞必须定义一个thread pool否则无法处理更多的连接数。

public class MyDataHandler extends IoHandlerAdapter {

public void messageReceived(IoSession session, Object message) throws Exception {

String act = message.toString();

long _id = session.getId();

session.setAttribute(_id, System.currentTimeMillis());

process(session, message);

}

private void process(IoSession session, Object msg) {

String cmd = getTcpCmd(msg);

if("1001".equals(cmd)){

while (!hasClosed) { //阻塞当前线程,作为主动推送

if (session.isClosing() || !session.isConnected()) {

break; //异常关闭,客户端主动关闭

}

if (hasData()) {

String data1 = "";

try {

data1 = readLatestData();

} catch (Exception e) {

e.printStackTrace();

}

session.write(data1 + "\n"); //发送数据给客户端,长连接

LOG.info("Send Client OK :" + session);

}

}

}

}

java mina 长连接_apache mina 长连接相关推荐

  1. java mina框架实例_Apache Mina框架实践

    1.为什么要用Apache Mina框架 ApacheMina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mi ...

  2. mina java 1.6 版本_Apache MINA学习

    1.准备工作 mina官方下载地址:http://mina.apache.org/downloads.html,这里使用的版本是apache-mina-2.0.4-bin.zip. slf4j官方下载 ...

  3. JAVA网络编程Socket常见问题 【长连接专题】

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  4. tcp长连接java_JAVA TCP长连接

    做了一个指纹门锁,需要用TCP长连接进行服务端和门锁间的数据通信. 目前JAVA写socket服务端,门锁连接JAVA服务端. 服务端开了一个线程在监听门锁发来的数据(此处必须实时监听数据) 在监听的 ...

  5. mysql killed进程不结束_php和mysql连接方式(短 长 池)

    一个php work进程只能处理一个请求,当完成一个请求了,才能处理下一次的请求 2.短连接: 执行到php关闭mysql连接的代码时,就断开,否则在处理本次请求结束的时候,释放mysql连接 实验: ...

  6. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?

    文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...

  7. 事务连接中断_HTTP长连接和短连接

    短连接 客户端和服务器每进行一次HTTP事务操作,就建立一次连接,任务结束就中断连接.http1.0协议默认使用短连接 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访 ...

  8. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  9. MySQL连接方式:长连接或者短连接

    MySQL 既支持短连接,也支持长连接.短连接就是操作完毕以后,马上close 掉.长连接可以保持打开,减少服务端创建和释放连接的消耗,后面的程序访问的时候还可以使用这个连接.一般我们会在连接池中使用 ...

最新文章

  1. [Linux] ubuntu 格式化u盘
  2. 刚刚,“达摩院2020十大科技趋势”正式发布!
  3. 测试几款STC下载电路
  4. 为什么 SAP 电商云 Spartacus UI RouterModule.forChild 传入的 path 为 null
  5. 快速查询ABAP transport request lock status
  6. 【知乎摘要】女生婚前应该清楚男友哪些方面了才能嫁给他
  7. 成长为一名Java架构师需要掌握的技术有哪些呢?
  8. 计算机文化理论基础考试单机版,计算机文化基础授课计划表
  9. eclipse导入jsp项目
  10. 淘淘商城第107讲——添加购物车
  11. 【Swift】图片裁剪
  12. 教你如何正确的去校验身份证
  13. 利用IPHONE自带播放器播放视频
  14. Apache POI 合并单元格
  15. 测试小故事52:怎么测?
  16. 电脑网络连接不上怎么办
  17. 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)
  18. FORESEE G500发布,江波龙国产固态硬盘再发声
  19. c++国密算法SM2加密解密demo
  20. 电子工程类职称包含计算机专业吗,电子信息工程专业技术职称

热门文章

  1. CentOS下查看最后登录的用户信息以及LOG记录
  2. matlab能修图吗,相机上这个“功能”,不打开会影响修图效果,别等拍完照片才知道...
  3. mysql int长度能到100嘛_MySQL int 类型不是最多只能到 4,294,967,295 么,怎么会有 int(11)?...
  4. c# 对象json互相转换_C#匿名对象(转JSON)互转、动态添加属性
  5. 字符设备驱动代码完整分析
  6. Selenium3自动化测试——5. 鼠标悬停操作
  7. 大工18秋《计算机网络技术》在线作业1,大工18秋《专业英语(计算机英语)》在线作业3【标准答案】...
  8. 服务器有操作系统吗,云服务器有操作系统吗
  9. Java医疗管理系统技术描述
  10. 别再说你不会!自学java教程百度云