8、MINA框架

1、什么是MINA? 一句话就是:一个简洁易用的基于 TCP/IP 通信的 JAVA框架。
2、下载地址:http://mina.apache.org/downloads-mina.html
3、一个简单的网络程序需要的最少jar包:mina-core-2.0.16.jar、slf4j-api-1.7.21.jar
4、开发一个 Mina 应用,简单的说,就是创建连接,设定过滤规则,编写自己的消息处理器
5、示例:

//创建一个非阻塞的Server端Socket,用NIO
SocketAcceptor acceptor = new NioSocketAcceptor(); //创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
//设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
//设定服务器端的消息处理器:一个SampleMinaServerHandler对象
acceptor.setHandler(new SampleMinaServerHandler());
int bindPort = 9999;
//绑定端口,启动服务器
try {acceptor.bind(new InetSocketAddress(bindPort)); } catch (IOException e) {e.printStackTrace();}
System.out.println("Mina Server is Listing on:= " + bindPort);public class SampleMinaServerHandler extends IoHandlerAdapter{public void sessionOpened(IoSession session) throws Exception {super.sessionOpened(session);System.out.println("incomming client : "+session.getRemoteAddress());}public void sessionClosed(IoSession session) throws Exception {super.sessionClosed(session);System.out.println("one Clinet Disconnect !");}public void messageReceived(IoSession session, Object message) throws Exception {//我们己设定了服务器解析消息的规则是一行一行读取,这里就可转为String:String s=(String)message;System.out.println("收到客户机发来的消息: "+s);session.write("echo:"+s);}
}

1、使用telnet测试:telnet localhost 9999
2、编写客户端:

NioSocketConnector connector = new NioSocketConnector(); // 创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
//设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
//设定服务器端的消息处理器:一个 SamplMinaServerHandler 对象
connector.setHandler(new SampleMinaClientHandler());
connector.setConnectTimeout(30);// Set connect timeout.//连接到服务器:
ConnectFuture cf = connector.connect(new InetSocketAddress("localhost", 9999));
// Wait for the connection attempt to be finished. cf.awaitUninterruptibly();
cf.awaitUninterruptibly();
//发送消息
//cf.getSession().getCloseFuture().awaitUninterruptibly();
//connector.dispose();
public class SampleMinaClientHandler extends IoHandlerAdapter {//当一个客端端连结进入时
public void sessionOpened(IoSession session) throws Exception {System.out.println("incomming client :"+session.getRemoteAddress()); session.write("我来啦........");
}
//当一个客户端关闭时
public void sessionClosed(IoSession session) {System.out.println("one Clinet Disconnect !"); }
//当客户端发送的消息到达时:
public void messageReceived(IoSession session, Object message)throws Exception {//我们己设定了服务器解析消息的规则是一行一行读取,这里就可转为 String:String s=(String)message;System.out.println("服务器发来的收到消息: "+s);//测试将消息回送给客户端session.write(s);
} }

使用 Mina 直接传送对象
1、public class Userinfo implements java.io.Serializable
2、 服务器,客户端都设定以对象为单位
//设定这个过滤器将以对象为单位读取数据
ProtocolCodecFilter filter= new ProtocolCodecFilter(new ObjectSerializationCodecFactory());
chain.addLast(“objectFilter”,filter);
3、接收对象
public void messageReceived(IoSession session, Object message) throws Exception {
//我们己设定了服务器解析消息的规则一个Userinfo对象为单位传输:
Userinfo us=(Userinfo)message;
}

8、Java网络编程——MINA框架相关推荐

  1. Java网络编程的框架

    三层架构与MVC的区别 三层架构是软件架构,是在整体上将整个软件系统从逻辑上划分为三层,即三个逻辑组件组成,目的是实现组件内的高内聚和组件间的底耦合,这三层分别是,表现层UI,业务逻辑层BLL,数据访 ...

  2. 8个java 网络编程框架介绍

    1Apache MINA 2Grizzly 3Netty 4NIO Framework 5QuickServer 6xSocket 7IOServer 8XNIO 自从JDK1.4中有了NIO以后,这 ...

  3. Java网络编程框架

    自从JDK1.4中有了NIO以后,这个方面越来越活跃,也为java赢得更多开发者的支持.做java网络编程需要掌握一些基本的知识和技能: 套接字编程.阻塞/非阻塞通信.创建HTTP服务器与客户程序.数 ...

  4. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)

    1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...

  5. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...

    Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...

  6. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  7. java 网络实验_20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  8. java网络编程实用精解_Java网络编程实用精解

    Java网络编程实用精解 作者:盛华 出版日期:2009年10月 文件大小:17.38M 支持设备: ¥30.00 适用客户端: 言商书局 iPad/iPhone客户端:下载 Android客户端:下 ...

  9. JAVA网络编程知识学习

    JAVA网络编程知识学习 学习目标 第一章 网络编程入门 1.1软件结构 1.2 网络通信协议 1.3 协议分类 1.4 网络编程三要素 协议 IP地址 IP地址分类 常用命令 端口号 InetAdd ...

最新文章

  1. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力!
  2. python连接sqlite加密_C#连接加密的Sqlite数据库的方法
  3. 常用的相似性度量(距离总结)
  4. spark on yarn提交任务后总是accepted以及通过yarn关闭application
  5. layui select动态赋值_layui与 VUE 配合使用时动态渲染 select 坑
  6. 民生证券手机网上开户流程
  7. android ndk opencv 3,opencv_and_opencv_contrib
  8. 计算机组成原理-第3章-3.3
  9. win10壁纸不能幻灯片放映_教你巧妙解决雨林木风Win10系统中背景桌面无法自动播放幻灯片...
  10. sniffer抓包工具(中文版+视频教程)
  11. 9000个网站、APP、社交网站真实用户头像打包
  12. 2022最新java坦克大战+免费源码+坦克大战图片
  13. 正则表达式-验证手机号与邮箱
  14. Glide加载圆角矩形图片
  15. java打印字符串显示_JAVA调用系统打印机打印字符串
  16. jquery 绘图工具 flot 使用
  17. 开源bug管理工具-Cynthia
  18. HBuilderX初次使用
  19. IntelliJ IDEA学习总结(2)——IntelliJ IDEA 入门使用教程
  20. 爬取好大夫网站医生数据

热门文章

  1. 网上理财诚诚富众投资理财赚钱的两个方向
  2. matlab输入频率函数,matlab的czt()函数实现频率细化的实例
  3. rt-thread的moudle源码分析
  4. 查找算法【二叉查找树】 - 二叉查找树的查找
  5. MP3文件的结构与编程
  6. ByteBuffer 之黏包和半包
  7. PHP airkiss demo,微信wifi airkiss一键配网 Demo和关键点【iOS】
  8. 卷积神经网络典型应用———AlexNet
  9. FIFAonline 4 游戏博客序言
  10. 深入职场,你需要知道的20个规则