mina

Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。

具体类可参考  http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html

可自定义编码,解码。小精灵手表用的协议为google的protocol buffer,所以需要在消息之前加4个字节,具体可参照小精灵项目和自己写的demo。

mina与服务器连接,需要不断向服务器发送心跳(自己定义的消息),用来判断客户端是否连接着,如果他超过几分钟不发,服务器判断他不在线,会断开连接。

但是有可能心跳服务会挂,导致客户端断开连接,所以,还需要开启一个服务,用来检测心跳是否发送。如果不发送,则这个服务或重新发送心跳。来保持一直在线。但是还是架不住服务会挂。


mina可能会报socket异常,这个异常是由于网络切换导致的,具体解决办法现在找不到。


服务器开启socket:

IoAcceptor ioAcceptor = new NioSocketAcceptor();
ioAcceptor.getFilterChain().addLast("logger", new LoggingFilter());
ioAcceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
ioAcceptor.setHandler(new DemoHandler());
ioAcceptor.getSessionConfig().setReadBufferSize(2048);
ioAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);// 10秒空闲

try {
ioAcceptor.bind(new InetSocketAddress(9238));
} catch (IOException e) {

e.printStackTrace();
}
}
static class DemoHandler extends IoHandlerAdapter{
       //创建
@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionCreated(session);
}
       //打开
@Override
public void sessionOpened(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionOpened(session);
}
//接收
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
super.messageReceived(session, message);
String mess = message.toString();
System.out.println("message---"+mess);
//返回给客户端
session.write(new Date()+"");
}
        //发送
@Override
public void messageSent(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
super.messageSent(session, message);
}
//关闭
@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionClosed(session);
}

客户端创建socket:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值