继续上一篇,这篇主要讲通过mina往B端发送消息。并接受消息,mina是一个网络通信框架,封装了javaNIO。简单易用。网上有非常多关于他的介绍,在此不赘述了。...,相同使用并发包中的ConcurrentHashMap实现,他也是线程安全的,代码例如以下: import java.net.InetSocketAddress;import java.util.HashMap...;import org.apache.mina.core.service.IoConnector;import org.apache.mina.core.session.IoSession;import...用堵塞的方式读取消息,通常是依据消息换行符或者特殊字符,或者对方关闭流来证明一条信息读取完毕,在mina中,有默认的编解码方式。...发现一个系列好文章:http://xxgblog.com/2014/10/16/mina-netty-twisted-10/ 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn
当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。...IoAccepter :相当于网络应用程序中的服务器端,它继承自IoServiece,并进行了扩展。 IoConnector :相当于客户端,它继承自IoServiece,并进行了扩展。...IoSession :当前客户端到服务器端的一个连接实例。 IoHandler :这个接口负责编写业务逻辑,也就是接收、发送数据的地方。这也是实际开发过程中需要用户自己编写的部分代码。...与 decode是最为重要的、也是你在使用 Mina时最主要关注的地方。...; import org.apache.mina.core.session.IoSession; /** * @description:主要是一些业务逻辑,如发送,接收消息 * @date:(2015
这里以mina整合springMVC为例: //springMVC的配置: 的 字符编码类 org.springboot.mina.codec.ICodeFactory--> mina.codec.WebSocketCodecFactory...,minRight: null //【默认不开启】用户控制聊天面板最小化时、及新消息提示层的相对right的px坐标,如:minRight: '200px' ,maxLength: 3000...session) throws Exception { // 将hash中的session移除。...接收前端发送来的信息(发送者的信息及发送内容,接受者的信息): 1080378 [pool-4-thread-2] INFO org.apache.mina.filter.logging.LoggingFilter
Session是服务器端对这种连接的抽象,MINA对其进行了封装,定义了IoSession接口,用来代表客户端与服务器的连接,在服务器端来 指代客户端,实现对客户端的操作、绑定与客户端有关的信息与对象。...Event MINA可以看成是事件驱动的。通常在网络通讯中,可以将整个过程划分为几个基本的阶段,如建立连接、数据通信、关闭连接。...不可能一直都接收和发送数据,因此就有Idle出现,在MINA中,如果在设定的时间内没有数据发送或接收,那么就会触发一个Idle事件。...因此严格来说,有6种类型的事件。 4。IoHandler 从以上MINA框架简图可以看出,对来自客户端数据最终处理是在IoHandler中处理的。...MINA 基本类的描述 在介绍架构之前先认识几个接口: IoAccepter 相当于网络应用程序中的服务器端 IoConnector 相当于客户端 IoSession 当前客户端到服务器端的一个连接实例
最近一段时间以来,mina很火,和移动开发一样,异常的火爆。前面写了几篇移动开发的文章,都还不错,你们的鼓励就是我最大的动力。好了,废话少说。...org.apache.mina.core.service.IoHandler; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession...,并把它写入输出流中 public void encode(IoSession session, Object message, ProtocolEncoderOutput out)...org.apache.mina.core.session.IoSession; import org.apache.mina.filter.keepalive.KeepAliveFilter; import...; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFilter
一、介绍 Apache Mina是一个网络应用框架,简化用户开发高性能、高可扩展性的网络应用程序的难度。...Mina提供了一个抽象的事件驱动的异步API,通过Java NIO实现各种传输协议如TCP/IP和UDP/IP。....htm 二、Apache Mina下载 下载最新的Mina v2.0.8版 地址见:http://mina.apache.org/mina-project/downloads.html 三、用Mina...; importorg.apache.mina.core.session.IdleStatus; importorg.apache.mina.core.session.IoSession; public...TimeServerHandler extendsIoHandlerAdapter { @Override publicvoid exceptionCaught(IoSession
),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。...; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.executor.ExecutorFilter...; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IoSession...IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中...(5.)IoSession:是对底层连接(服务器与客户端的特定连接,该连接由服务器地址、端口以及客户端地址、端口来决定)的封装,一个IoSession对应于一个底层的IO连接(在Mina中UDP也被抽象成了连接
大家好,又见面了,我是你们的朋友全栈君。 什么是Mina框架 Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。...Mina主页 下载地址 为什么使用Mina? 传统socket:阻塞式通信 每建立一个Socket连接时,同时创建一个新线程对该Socket进行单独通信(采用阻塞的方式通信)。...当Channel注册至Selector以后,经典的调用方法如下:nio中取得事件通知,就是在selector的select事件中完成的。...如果发现这个值>0,表示有事件发生,马上迭代selectedKeys中的SelectionKey,根据Key中的表示的事件,来做相应的处理。...import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; /**
线程中执行 Connector : 作为连接客户端,SocketConector用来和服务器端建立连接,连接成功,创建IoProcessor Thread(不能超过指定的processorCount)...Processor : I/O处理器、允许多线程读写,开发过程中只需要指定线程数量,Processor通过Nio框架进行I/O的续写操作,Processor包含了Nio的Selector的引用。...这点也正是mina的优势,如果直接用Nio编写,则需要自己编写代码来实现类似Processor的功能。...I/O Porcessor线程数的设置 :如果是SocketConnector,则可以在构造方法中指定,如:new SocketConnector(processorCount, Executors.newCachedThreadPool...,实现了接口IoService,维持了一个和服务器端Acceptor的一个链接,线程数量就是创建SocketConnector 的数量 Mina的SocketAcceptor和SocketConnector
Mina各组件介绍上一篇文章已经系统的介绍了Mina的运行流程,Apache推出的Mina性能上很是高效,上章节我们知道内部有很多的类,各个类之间的依赖也是很多,他们之家都是相互依赖。...下面主要看看各个类中的方法。本篇就当是Mina的文档了。...="blue">void exceptionCaught(IoSession session, Throwable cause) 这个方法在你的程序、Mina 自身出现异常时回调...发送消息的时机:发送消息应该在sessionOpened()、messageReceived()方法中调用IoSession.write()方法完成。...)可以方便的以指定的编码方式存储字符串、InputStream asInputStream()方法从IoBuffer 剩余的未读的数据中转为输入流等IoFuture========在Mina的很多操作中
基于MINA框架快速开发网络应用程序 1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架...MINA框架当前稳定版本是1.1.6,最新的2.0版本目前已经发布了M1版本。...2.MINA框架的常用类 类NioSocketAcceptor用于创建服务端监听; 类NioSocketConnector用于创建客户端连接; 类IoSession用来保存会话属性和发送消息; 类IoHandlerAdapter...框架来开发的网络应用程序代码结构更清晰;MINA框架完成了底层的线程管理;MINA内置的编码器可以满足大多数用户的需求,省去了开发人员消息编码解码的工作。...具称使用MINA开发服务器程序的性能已经逼近使用 C/C++ 语言开发的网络服务。因此,建议在网络应用程序开发过程中尝试使用MINA框架来提高我们的开发效率和应用程序的执行效率。
Mina异步IO使用的Java底层JNI框架,Mina提供服务端和客户端,将我们的业务解耦开发.真正做到高内聚低耦合的思想核心类===IoService :Mina中将服务端和客户端都看成是服务,这里提供统一接口...也正是IoService来监听消息返回消息这些步骤,undefined可以说IoService就是我们Mina中核心IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的...在IoService中我们会定义我们消息的处理过滤器(上文的拦截器),消息处理的业务类undefined在上文简介中我们知道,这一步其实是IoProcessor来完成,那么IoProcessor在什么出现呢...我们一个IoServer处理一个线程中的消息。我们监听器就是监听线程内的消息。每一次的绑定都会有不同的监听器、ioSession去专门处理消息之间的通信。...我们可以通过IoSession设置一些请求数据完成数据的权限验证。在服务创建的时候我们正常需要设置IoSession的一些配置。
参考:http://xinsync.xju.edu.cn/index.php/archives/category/prglang/java/mina 简单介绍:MINA框架是对java的NIO包的一个封装...MINA中有个过滤器和处理器的概念,过滤器用来过滤数据,处理器用来处理数据。...而在解码和编码过程中WebHandler(扩展了IoHandlerAdapter抽象类)起到了处理器的作用。...请求首先来到 WebDecoder类(实现了ProtocolDecoder接口)中的 boolean decode(IoSession session, IoBuffer in, ProtocolDecoderOutput...:对于一个MINA程序而言,对于WebHandler类只生成一个对象,所以要考虑线程安全问题 */ 然后到 WebEncoder类(实现了ProtocolEncoder接口)中的 boolean encode
在使用mina的过程中,我们通常会自定义各种报文,以使用于自己的业务。今天就为大家带来一款类似http协议的解码过程。...mina有自带的解析http数据包的解码类。...artifactId> 3.0.0-M2 或者下载mina的源码包,查看org.apache.mina.http.HttpServerDecoder...; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.CumulativeProtocolDecoder...StringUtils.isNotEmpty(arr[1])) { map.put(arr[0],arr[1]); } else { log.error("收到的数据包中存在非法内容
没有拥塞控制:拥塞,是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象,就像交通堵塞一样。...应用场景 很多的实时应用(如IP电话、实时视频会议、某些多人同时在线游戏等)要求源主机以很定的速率发送数据,并且允许在网络发生拥塞时候丢失一些数据,但是要求不能有太大的延时,UDP就刚好适合这种要求...,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输) 成对出现,一对套接字: Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)} 3....Socket 与 Http 对比 Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题 HTTP协议 属于 应用层,解决的是如何包装数据 由于二者不属于同一层面...框架 服务器代码请在eclipse平台运行 按照我的步骤一步步实现就可以无脑运行了 步骤1:导入Mina包 请直接移步到百度网盘:下载链接(密码: q73e) ?
AI 科技评论按:现在提到 AI 的时候,大家已经很少联想到电影《终结者》中的天网那样有自己独特思维逻辑以至于得出了反人类结论的「超人类智能」了。...由此他们提出了一个基于奖励建模的递归式应用的方法,让机器在充分理解用户意图的前提下,再去解决真实世界中的复杂问题。 AI 科技评论编译如下。 ?...这个对齐问题可以归纳在强化学习的框架中,差异在于智能体是通过交互协议与用户进行交流、了解他们的意图,而非使用传统的数值化的奖励信号。...至于交互协议的形式可以有很多种,当中包括演示(模仿学习,如谷歌的模仿学习机器人)、偏好倾向(人类直接评价结果,如 OpenAI和DeepMind的你做我评 )、最优动作、传达奖励函数(arxiv.org...协助课题研究取得进展是DeepMind日常工作中很重要的一个主题。如果作为研究者、工程师或者有天赋的通才,有兴趣参与DeepMind的研究中来,DeepMind也欢迎他们申请加入自己的研究团队。
因为Openfire只通过Module来管理的,那么对应的网络管理应该就在Module中。...openfire里使用了Mina来实现socket网络处理。...只不过看代码中对于S2S类型的连接使用的不是mina,如下代码: if ( getType() == ConnectionType.SOCKET_S2S ) { connectionAcceptor...在Openfire中对于Session的管理都集中在SessionManager模块。但在前面说到连接管理时已经知道了IoSession的创建过程,但并没有看到openfire是如何管理它的。...1、如何在集群中发消息 对于消息最终还是通过session来发送的,前后代码太多,就直接看一下sessionManager中的getSession方法吧。
它已经得到成百上千的商业/商用项目验证,如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbo等等。 为什么这么火,是有原因的。...1、都是Trustin Lee的作品,Netty更晚; 2、Mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题; 3、Netty...的文档更清晰,很多Mina的特性在Netty里都有; 4、Netty更新周期更短,新版本的发布比较快; 5、它们的架构差别不大,Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高...,Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi); 6、Netty比Mina使用起来更简单,Netty里你可以自定义的处理...无连接的特性暴露出来;而Mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,而要Netty做到这一点比较困难。
这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2、而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文)。...本文中的Demo同时用MINA2和Netty4分别实现服务端的目的,是因为很多人都在纠结到底是用MINA还是Netty来实现高并发的Java网络通信服务端,在此干脆两个都实现了,就看你怎么选择。...Demo中,已经解决跨平台通信时的常见的乱码、数据字节异常等问题,如觉得有用,你可直接使用之。 学习交流 - 更多即时通讯技术资料:http://www.52im.net/forum.php?...本文是《NIO框架入门》系列文章中的第4篇,目录如下: 《NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示》 《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo...服务端运行结果(Netty4方案) 本文小结 Demo中的客户端代码是从开源即时通讯框架MobileIMSDK的Android端中复制出来的(为了方便理解做了大幅简化),有兴趣的可看看 MobileIMSDKAndroid
从可维护性角度看,由于 NIO 采用了异步非阻塞编程模型,而且是一个 I/O 线程处理多条链路,它的调试和跟踪非常麻烦,特别是生产环境中的问题,我们无法进行有效的调试和跟踪,往往只能靠一些日志来帮助分析...需妥具备其他的额外技能做制垫,例如熟悉Java 多线程编程。这是因为NIO编程涉及到Reactor 模式,你必须对多钱程和网络编程非常如悉,才能编写出高质量的NIO程序。...JDK NIO的BUG,比如epoll bug,这个BUG会在linux上导致cpu 100%,使得nio server/client不可用,这个BUG直到jdk 6u4才解决,但是直到JDK1.7中仍然有这个问题...与Netty同样功能的NIO框架还有Mina,Netty的主导作者与Mina的主导作者是同一人,在设计理念上与Mina基本上是一致的。...Mina出身于开源界的大牛Apache组织,Netty出身于商业开源大亨Jboss。 这几年Netty社区相对比较活跃,所以我们就先选择Netty作为入手网络编程的首选,有时间再学习一下Mina。