位置: 编程技术 - 正文

android(客户端)+Apache MINA(服务器端)通信的实现 智能家居动起来!(android客户端开发是干嘛的)

编辑:rootadmin

推荐整理分享android(客户端)+Apache MINA(服务器端)通信的实现 智能家居动起来!(android客户端开发是干嘛的),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android客户端开发是干嘛的,android客户端开发,海尔n+智控android客户端,海尔n+智控android客户端,android客户端是什么手机,android客户端下载安装,android客户端什么意思,icloud android客户端,内容如对您有帮助,希望把文章链接给更多的朋友!

Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。目前正在使用 MINA 的软件包括有:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、Openfire 等等。

这个是比较官方的说法,在实际开发中,比如游戏开发,智能家居中要求加入及时通信功能,这样就能达到了直接通过手机发送报文信息给这些可爱的电器们。首先我们要介绍一下mina的相关知识,篇幅有点长,如果直接想例子的话,可以跳过这一段。

一、Mina包几个比较重要的接口:

IoServiece :这个接口在一个线程上负责套接字的建立,拥有自己的 Selector,监听是否有连接被建立。IoProcessor :这个接口在另一个线程上负责检查是否有数据在通道上读写,也就是说它也拥有自己的 Selector,这是与我们使用 JAVA NIO 编码时的一个不同之处,通常在 JAVA NIO 编码中,我们都是使用一个 Selector,也就是不区分 IoService与 IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在 IoService 上的过滤器,并在过滤器链之后调用 IoHandler。 IoAccepter :相当于网络应用程序中的服务器端IoConnector :相当于客户端IoSession :当前客户端到服务器端的一个连接实例IoHandler :这个接口负责编写业务逻辑,也就是接收、发送数据的地方。这也是实际开发过程中需要用户自己编写的部分代码。IoFilter :过滤器用于悬接通讯层接口与业务层接口,这个接口定义一组拦截器,这些拦截器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能,其中数据的 encode与 decode是最为重要的、也是你在使用 Mina时最主要关注的地方。

MIINA架构图

简单地来讲,就分为三层:

I/O Service :负责处理I/O。I/O Filter Chain :负责编码处理,字节到数据结构或数据结构到字节的转换等,即非业务逻辑的操作。I/O Handler :负责处理业务逻辑。

客户端的通信过程:

通过SocketConnector同服务器端建立连接。链接建立之后I/O的读写交给了I/O Processor线程,I/O Processor是多线程的。通过I/O Processor读取的数据经过IoFilterChain里所有配置的IoFilter,IoFilter进行消息的过滤,&#;式的转换,在这个层面可以制定一些自定义的协议。最后IoFilter将数据交给Handler进行业务处理,完成了整个读取的过程。写入过程也是类&#;,只是刚好倒过来,通过IoSession.write写出数据,然后Handler进行写入的业务处理,处理完成后交给IoFilterChain,进行消息过滤和协议的转换,最后通过I/O Processor将数据写出到socket通道。

IoFilterChain作为消息过滤链

读取的时候是从低级协议到高级协议的过程,一般来说从byte字节逐渐转换成业务对象的过程。写入的时候一般是从业务对象到字节byte的过程。

客户端通信过程 IoSession贯穿整个通信过程的始终

二、通过网络调试助手当成客户端发送消息给服务器端。

这里服务器端采用的Struts2&#;Spring4&#;Mybatis3&#;Mina2,客户端先用网络调试助手,后面用android移动终端。

(1)Apache官方网站: (2)服务器端一共要用到四个jar包,包括一个日志包。将他们放在lib中,并加载进去

mina-core-2.0.7.jar slf4j-log4j-1.7.6.jar slf4j-api-1.7.6.jar log4j-1.2..jar (日志管理包)

(3)如果要使用日志的jar包,则要在项目的src目录下新建一个log4j.properties,添加内容如下:

(4)服务器端程序

1、mina2与spring整合

android(客户端)+Apache MINA(服务器端)通信的实现 智能家居动起来!(android客户端开发是干嘛的)

这里绑定的端口号是,handler由HelloWorldServerHandler类处理。字符编码过滤器由TextLineChineseCodecFactory处理。

2、HelloWorldServerHandler类

TextLineChineseCodecFactory类

服务器端这边程序已经写完了,下面用网络调试助手来测试。

这里需要注意的是发送消息的是采用进制数据在末尾点击 0D 0A 表示换行,网络调试助手才认为你已经输入消息输完了,服务器端才能获取数据。消息如下:

-- ::. [INFO ] org.apache.mina.filter.logging.LoggingFilter {LoggingFilter.java:} - RECEIVED: HeapBuffer[pos=0 lim=4 cap=: 0D 0A]1#=====

三、通过安卓客户端发送消息。

需要两个jar包, mina-core-2.0.7.jar slf4j-android-1.6.1-RC1.jar 。百度直接搜索下载即可。

由于接受消息会阻塞Android的进程,所以我把它开在了子线程中。

需要注意的是connector.setHandler()这个方法,发送消息由MinaClientHandler类处理。

MinaClientHandler类

是不是跟服务器端很相&#;,就那么几个方法。

接下在MainActivity中调用即可。

布局文件很简单,就一个文本输入框和一个按钮。就不贴了。

本文到这里就结束了。

本项目源码:

版权声明:本文为博主原创文章,未经博主允许不得转载。

移动端WEB开发,click,touch,tap事件浅析 一、click和tap比较两者都会在点击时触发,但是在手机WEB端,click会有~ms,所以请用tap代替click作为点击事件。singleTap和doubleTap分别代表单次点击和

ViewStub的实战开发 一.常见的布局分析在开发的时候,有些布局是要根据条件而动态显示,达到一个布局两用的效果,运用View.VISIBLE和View.GONE去改变布局的可见性,这样的

使用maven构建android项目 为什么引入maven构建方式做过java后台开发的人员应该都知道,maven使用解决依赖包管理问题的,同时优化测试,打包,部署等流程的.在android里,maven可以管

标签: android客户端开发是干嘛的

本文链接地址:https://www.jiuchutong.com/biancheng/380996.html 转载请保留说明!

上一篇:android gradle task dependence

下一篇:移动端WEB开发,click,touch,tap事件浅析(移动端web开发需要学什么)

  • 企业所得税季报和年报的区别
  • 印花税额计算及计税基础
  • 行政事业单位购买固定资产的流程
  • 小规模纳税人做账要做增值税吗
  • 电子汇票提示付款撤销
  • 融资租赁可以确认为资产吗
  • 开发票系统税号0和o怎么区别
  • 全年一次性奖金单独计税怎么算
  • 小规模纳税人可以开数电专票吗
  • 无形资产特许权使用费怎么做账
  • 公益性捐赠会计分录金额
  • 公司委托财务去银行办理业务
  • 没通过认证的增值税发票是否能够记入成本抵扣
  • 销售原材料的账务处理
  • 出纳现金日记账表格模板
  • 电子发票开错了怎么解决?
  • 在建工程如何抵扣个税
  • 报废固定资产收入计入什么科目
  • 收到商业承兑汇票怎么兑现
  • 用钱买的代金券怎么使用
  • 关联公司代付款协议
  • 被强制升为一般纳税人的条件
  • 暑假工需要什么条件
  • 推广服务费收入如何核算成本
  • 企业收到政府拆迁补偿款要交税吗怎么做账
  • 暂估入库发票回来怎么做账
  • 最新版小企业会计准则是哪一年的
  • 投标保证金利息怎么做账
  • 简述linux系统的启动
  • 红字专用发票是红色的吗
  • 净资产收益率怎么求
  • 在申报季度企业所得税时,残疾人工资可以加计扣除吗
  • 业务招待费的纳税筹划
  • mac phpstudy
  • 商场代收款发票图片
  • 专利代理服务费计入什么科目
  • 专项应付款怎么冲销
  • 产品出库单附在什么凭证后面
  • mysql的排序规则
  • 政府补助的会计准则
  • 工资表社保表格怎么算
  • 哪些合同必须签订书面合同
  • 电子口岸无纸化报关
  • 是不是所有的发票都是一样的
  • 物业管理企业会计核算的特点如何?
  • 报税残疾人保障费怎么算
  • 现金流量表中的现金流量包括哪些
  • 母公司无偿借款给子公司
  • 固定资产盘亏造成的损失计入什么科目
  • 公司健身器材使用制度
  • 职工辞退福利是否要申报个税
  • 固定资产核算的内容主要包括
  • 代开专票作废了扣了两次税怎么办?
  • 汇算清缴业务招待费调整分录
  • 异地工程开票要注意什么手续
  • 工程结算价超过合同价10%
  • 免抵退的定义
  • 进项税和销项税月末怎么结转
  • 预提与计提的区别在哪里
  • 公司企业名称变更流程
  • 跨年做进项税额转出
  • 什么是增资扩股协议
  • 加大固定资产投资
  • sql合并多条记录某一个字段
  • IPad怎么连接电视机看看影视
  • linux AS3 oracle9i 安装指南
  • spyware.exe - spyware是什么进程
  • 联想笔记本win7装win10
  • win8怎么看电脑wifi密码
  • win10系统开机蓝屏,重启就好
  • 安卓获取设备信息
  • Unity3D游戏开发引擎
  • js怎么删除
  • nodemcu web
  • 表单失去焦点事件
  • jquery动态添加css样式
  • Javascript & DHTML 实例编程(教程)(四)初级实例篇2—动画
  • 纳税申报期过了怎么申报
  • 福建通用定额发票查询
  • 税控盘版开票软件打不开是什么原因
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设