MINA客户端建立连接,收发消息

原创 2014年06月12日 17:58:11
public class LocalClient {
private static final Logger log = Logger.getLogger(LocalClient.class);

/**
* 当前Session与本地6001端口通信
*/
private static IoSession session = null;
/**
* 执行客户端消息
* @param ami 发送的消息AppMsgInfo类型 注明:发送的消息和接收的消息都是根据协议已封装好的xml
* @return 返回响应的消息ResponseVo类型
*/
public synchronized static ResponseVo executeCommand(MessageInfo ami) {
ResponseVo vo = null;
if (null == session || null==session.getRemoteAddress() || !session.isConnected()) {
// 实际应用中,这里可以生成一个线程来监听
// Create TCP/IP connector.
IoConnector connector = new NioSocketConnector();
//连接服务器动作,超时时间为3秒
connector.setConnectTimeoutMillis(3000L);
connector.getSessionConfig().setUseReadOperation(true);
// 创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();

chain.addLast("codec", new ProtocolCodecFilter(new AppClientCodecFactory()));//设置通信协议
// 设定客户端的消息处理器:一个AppClientHandler对象
connector.setHandler(new AscJavaClientHandler());
// 连结到服务器:
try {
ConnectFuture cf = connector.connect(new InetSocketAddress("127.0.0.1",6001));
//等待连接创建完成
cf.awaitUninterruptibly();
//获取会话
session=cf.getSession();
//进行消息传输
WriteFuture writeFuture = session.write(ami);
writeFuture.awaitUninterruptibly();
//判断消息是否发送完成
if(writeFuture.isWritten()){
ReadFuture readFuture = session.read();
   //等待消息响应
   readFuture.awaitUninterruptibly();
   //是否响应成功
   if(readFuture.isRead()){
    //获取消息
   Object message  = readFuture.getMessage();
   //转成消息对象
   ami = (MessageInfo)message;
if(null!=ami){
//转成responsevo对象
vo = Vo2XmlUtil.xmlStr2ResonseVo(ami.getMsgIdentify(), ami.getMsgBody());
}else{
log.error("收到服务端[控制器-6001端口]发来的消息: 消息不合法或空消息!");
}
   }
}
} catch (Exception e) {
log.error("can't connect to local port [6001] server!"+e.toString());
}finally{
//等待连接关闭
if(null!=session){
session.getService().dispose();
}
//关闭客户端线程
if(null!=connector){
connector.dispose();
}
}
}
return vo;
}
}

Mina TCP服务端客户端 示例

 服务端代码: Java代码   package com.xd.nms.example;  import java.io.IOException;  import jav...
  • wilsonke
  • wilsonke
  • 2014年05月15日 09:01
  • 5786

使用mina保持android端和服务端的长连接

mina简介Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它是一个介于应用程序与网络之间的NIO框架,通过Java nio技术基于TCP/IP和UDP/IP协议提供了...
  • zxc123e
  • zxc123e
  • 2017年01月23日 11:26
  • 2165

mina长连接ConnectGameServer 类

package mi.magic.io; import java.net.InetSocketAddress; import java.util.concurrent.TimeUnit; impo...
  • u012729210
  • u012729210
  • 2013年12月28日 10:26
  • 810

Mina客户端Client和Server对象传输demo

最基本的那个例子,也就是官网上的那个demo,我就不说了...1、demo地址:http://weavesky.com/2010/02/19/mina-article-2/  但是我们实际项目中,肯定...
  • aa4790139
  • aa4790139
  • 2013年01月06日 18:02
  • 16228

Java——Mina 服务端和客户端实现输出HelloWorld

一、mina是什么   官方解释:Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性...
  • u013507760
  • u013507760
  • 2016年08月29日 16:33
  • 3567

Apache MINA客户端服务器简单实例

其实客户端和服务器是相对的,互发消息,在底层当然是互为服务器客户端.只是这里为了封装区分开了.首先需要导入的包:log4j.jarmina-core-2.0.4.jar slf4j-api-1.6.3...
  • lsh6688
  • lsh6688
  • 2013年07月31日 18:25
  • 11532

Mina学习笔记(二) 简单客户端实例

上一篇实现了一个简单的服务端程序。 现在来实现一个客户端程序  程序功能: 客户端发送一个字符串给服务端, 服务端返回当前时间给客户端。 基于上一文中的项目 ,首先加入两个对象,分别是...
  • is_zhoufeng
  • is_zhoufeng
  • 2014年03月19日 01:50
  • 4063

Mina客户端示例

  • 2016年01月19日 16:27
  • 1.92MB
  • 下载

Mina client客户端编写

网上看了下 找mina的客户端编码 发现大家都在讲服务端编写 而且都是拷贝来拷贝去  下面一个是 面向 mina服务端自定义 过滤器的 客户端编码 public class Min...
  • adyuebanwan
  • adyuebanwan
  • 2013年10月17日 16:01
  • 590

mina客户端简单代码示例

  • 2017年07月27日 19:05
  • 910KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MINA客户端建立连接,收发消息
举报原因:
原因补充:

(最多只允许输入30个字)