看我们群里经常有人在问mina心跳问题,虽然俺是菜鸟可是觉得挺简单的啊,就写了个dome,希望大家多多提意见。

俺做过一段时间网络协议。所以觉得挺简单的吧。哎呀,反正技术就那样了没啥难的。

废话不多说了,附上项目,需要的人down下来跑一下吧。maven构建的,只要jar都down下来了,我想跑就没问题。本来不太习惯写注释,还是特意添加了些。

mina的好处:自己搜了,俺是菜鸟嘛,也没用几次,就觉得mina的异步io(不用为每个连接创建线程),事件驱动(不懂就搜,我也不太懂反正就是好)还挺好的。

说说思路吧:

第一步:将 文件/json/……装入实体,所有你想传输的都可以装入实体(注意大文件不适合,因为内存溢出问题,非要传就该边读边写了。mina也支持udp传输,大文件传输我这就不实现了),实体最好分head和body,

head:放数据包基本信息(比如:一个完整数据包总长度,数据类型(心跳包/数据包/大文件/身份认证等)),

body:放具体的数据类容。

第二步:hander将封装好的实体交由编码工厂(过滤器链),mina有基本的编码器需要自己添加,但通常是不能够满足我们需求的,所以通常自己实现编码器并加入过滤链中。

第三步:解码(顾名思义就是将接收的数据包转换成实体。编码工厂包含编解码,注意解码顺序,先放进去的想取出来,也就是先进先出原则)。

第四步:过滤链跑完后将实体交由hander,自己在根据具体的业务需求完成进一步的操作,到此整个mina的工作就完成了。

我也很少写博客,就快过年了嘛,公司也没啥事,就写个了,写到这才发觉没发上床附近,尻尻尻…………………………………….

只有上传到网盘里,需要的去下吧,有什么不好需要改进的欢迎留言:http://pan.baidu.com/s/1gd5NA5l

本项目实现了:实体、文件、批量传输

使用说明:本项目是maven构建自己看着办,目地是与spring集成所以顺便搞成spring mvc的了,所以运行环境最好是tomcat了,其他web服务器没测过啊,

里面包含j2se的servicemina类可以直接运行,看需要了。某些地方的注释可以取消或添加方便测试心跳了,自己试吧。

over

maven_spring mvc_mina_dome(实体,文件,批传)(spring mina 初学dome)的更多相关文章

  1. Ajax实现文件上传(Spring MVC)

    ## 前端表单 和 JQuery jsp/html代码 使用JQuery <script src="static/js/jquery-3.4.1.js"></sc ...

  2. 分布式文件上传 spring boot + fastdfs + dropzone

    1.首先安装fastDFS 参考链接: https://www.funtl.com/zh/spring-cloud-itoken-codeing/%E5%88%86%E5%B8%83%E5%BC%8F ...

  3. spring mvc文件上传(单个文件上传|多个文件上传)

    单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包    1.所需jar包:                commons-fileupload-1.3.1.jar       ...

  4. 文件上传和下载(可批量上传)——Spring(二)

    针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...

  5. Spring Boot 文件上传原理

    首先我们要知道什么是Spring Boot,这里简单说一下,Spring Boot可以看作是一个框架中的框架--->集成了各种框架,像security.jpa.data.cloud等等,它无须关 ...

  6. 补习系列(11)-springboot 文件上传原理

    目录 一.文件上传原理 二.springboot 文件机制 临时文件 定制配置 三.示例代码 A. 单文件上传 B. 多文件上传 C. 文件上传异常 D. Bean 配置 四.文件下载 小结 一.文件 ...

  7. SpringMVC框架06——文件上传与下载

    1.文件上传 Spring MVC框架的文件上传是基于commons-fileupload组件的文件上传,只不过Spring MVC框架在原有文件上传组件上做了进一步封装,简化了文件上传的代码实现. ...

  8. SpringMVC 文件上传&拦截器&异常处理

    文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用 Jakarta Commons FileUpload ...

  9. SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传

    1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...

随机推荐

  1. 客户端实现蓝牙接收(C#)

    知识总结发布  (转载) 网上有关蓝牙接收的资料很多,使用起来也很简单,但是我觉得还是有必要把这些知识总结下来,蓝牙开发需要用到一个第三方的库InTheHand.Net.Personal.dll,感兴 ...

  2. 对一个二维数组进行升序排列a[0][1]为最小

    public static int[][] dyadicArraySort(int a[][]){ int temp=0;int sum =0;int nn=0; for(int i=0;i<a ...

  3. React组件库

    图表组件库:Recharts(React和D3构建的图表库) UI组件库:react-bootstrap

  4. 谈谈Memcached与Redis

    1. Memcached简介 Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器.其本质上就是一个 ...

  5. C# java MD5加密方不一致问题

    说来惭愧,做开发几年了,一直在吸取,今天也写写自已关于技术的一点点理解,不正之处,请大家多多指点. 由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式,而现在需要切换到Java平台下 ...

  6. sublime text2 换主题

    网上看到一款喜欢的主题,换掉初始的主题,感觉颜色浅一点会比较好看,看中了下面这款. 后来看到有在 github 上的人做的 ,这是地址 ,上面也有详细的如何更改的步骤,下面是我自己这里做个备份. 1. ...

  7. 《构建之法》8&16

    [8.1] 对产品的生命周期管理好像一直以来都没有引起我足够的重视,在这一段对产品学习的过程中也少有看到相关内容.是因为针对不同产品而言,产品周期的管理太具有个性特征,没有太统一的规则可循吗?我觉得不 ...

  8. (转)pymysql 连接mysql数据库---不支持中文解决

    往数据库里插入中文时出现异常:UnicodeEncodeError: 'latin-1' codec can't encode characters 就是编码的问题,pymysql默认的编码是lati ...

  9. Java多线程初探

    多线程 单线程的程序只有一个顺序执行流.多个顺序流之间互不干扰. 多线程的创建 定义Thread类的子类,重写该类的run()方法. 创建Thread子类的实例. 调用线程对象的start()方法来启 ...

  10. MySQL存储IP地址操作

    数据库数据表创建语法: DROP TABLE IF EXISTS `admin`; CREATE TABLE IF NOT EXISTS `admin`( `adminid` INT UNSIGNED ...