星空网 > 软件开发 > 操作系统

MirrorNetwork 基于jmdns和netty的android网络通信开源库

目前android很多开源的网络通信库大多是基于http, 像Volley, android-async-http等等,在WAN上的网络通信是个不错的解决方案,而对于在局域网内的通信场景,上面基于http的网络通信仍然有效,但是并非所有的服务端都采用http服务,MirrorNetwork正是在这个需求下产生,它基于jmdns来实现服务自动发现,零网络配置,基于netty来实现android设备间的网络通信。

              MirrorNetwork 基于jmdns和netty的android网络通信开源库images/loading.gif' data-original="http://images2015.cnblogs.com/blog/342517/201602/342517-20160212122701589-1139642523.png" width="609" height="304" />

 

(1) 消息模型MirrorMessage
 
MirrorNetwork定义了一种消息模型MirrorMessage,它包含三个重要成员:
 
MIRROR_APPTYPE appType:消息承载的应用类型,使得MirrorNetwork收到该消息后,可以判断将该消息分发给哪个应用上层的消息监听对象(该类实现IMirrorMsgListener)。
 
String peerAddress:server使用,MirrorNetwork支持多个client同时连接一个server, server发送消息给其中一个client,需要指定该client的地址
 
Object content:消息承载的应用层需要的真正内容,应用层可以根据业务自定义content类,仅需要该类实现Serializable。
 
(2) 消息通信实体
MirrorNetwork定义了一个接口类INetworkConnection,通过这个接口类,我们可以自定义各种不同的具体通信实体,MirrorNetwork基于netty定义了两个通信实体类NettyClient和NettyServer,这两个类实现了INetworkConnection接口。
public interface INetworkConnection { /** * * @Title: start  * @Description: cli/svr endpoint connects into network(connect/bind) * void * @throws */ public void start(); /** * * @Title: send  * @Description: send msg to peer, notice: * for supporting cli:svr=*:1 * if svr sends msg to cli, mirrormessage req must set peerAddress. * if cli sends msg to svr, peerAddress not need set. * @param req * @return * MIRROR_TRANSFSTATUS * @throws */ public MIRROR.NETSTATUS send(MirrorMessage req); /** * * @Title: stop  * @Description: just close network connection, you can start again for connecting again * recommend using stop for simple. * void * @throws */ public void stop(); /** * * @Title: close  * @Description: close network connection and release all resources. * void * @throws */ public void close(); /** * * @Title: setMirrorMsgListener  * @Description: set msglistener for recving msg from peers, * you are allowed registering listener once for each appType. * @param appType * @param li * @return * boolean * @throws */ public boolean setMirrorMsgListener(MIRROR_APPTYPE appType, IMirrorMsgListener li); /** * * @Title: isClosed  * @Description: check if network connection was closed. * @return * boolean * @throws */ public boolean isClosed();}

 

通信实体(nettyclient, nettyserver)通过setMirrorMsgListener方法为每种业务层(指定MIRROR_APPTYPE)设置监听对象,用来实现异步通信,接收对端消息。

 

MirrorNetwork 基于jmdns和netty的android网络通信开源库


 
MirrorNetwork的实现代码和使用指南,请访问https://github.com/europelee/MirrorNetwork




原标题:MirrorNetwork 基于jmdns和netty的android网络通信开源库

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

One Retail Group:https://www.goluckyvip.com/tag/23531.html
One World:https://www.goluckyvip.com/tag/23532.html
Onebigads:https://www.goluckyvip.com/tag/23533.html
OneCard:https://www.goluckyvip.com/tag/23534.html
onedrop:https://www.goluckyvip.com/tag/23535.html
OneHourTranslation:https://www.goluckyvip.com/tag/23536.html
九月初新疆旅游服装搭配(新疆游玩必备衣服清单):https://www.vstour.cn/a/408257.html
黄果树瀑布景区景点 - 黄果树瀑布景区景点分布图:https://www.vstour.cn/a/408258.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流