Mina使用总结(三)MinaClient
简单的Mina客户端代码MinaSimpleClient.java:
package com.bypay.mina.client; import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import com.bypay.mina.handler.ClientTimerHandler; /**
* Mina客户端
* @author 唐延波
* @date 2015-1-20
*
*/
public class MinaSimpleClient { private static String HOSTNAME = "localhost"; private static int PORT = 9123; /**
* @author 唐延波
* @throws InterruptedException
* @date 2014-11-4
*/
public static void main(String[] args) throws InterruptedException {
NioSocketConnector connector = new NioSocketConnector();
//设置编码解码器
connector.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8")))); //设置Handler
connector.setHandler(new ClientTimerHandler()); //获取连接,该方法为异步执行
ConnectFuture future = connector.connect(new InetSocketAddress(
HOSTNAME, PORT)); //等待连接建立
future.awaitUninterruptibly(); //获取session
IoSession session = future.getSession(); //等待session关闭
session.getCloseFuture().awaitUninterruptibly(); //释放connector资源
//实际开发中,不要频繁关闭connector,因为它是重量级资源,应该设计成单例或者连接池
connector.dispose(); }
}
处理消息发送和消息接收
ClientTimerHandler.java代码:
package com.bypay.mina.handler; import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession; /**
* ClientHandler
*
* @author 唐延波
* @date 2015-1-20
*
*/
public class ClientTimerHandler extends IoHandlerAdapter { @Override
public void sessionCreated(IoSession session) throws Exception {
// session 创建时调用
session.write("test");
} @Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// 异步接收消息
String str = message.toString();
System.out.println("接收服务端消息:" + str);
} @Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
// 出现异常
cause.printStackTrace();
session.close(true);
} @Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
// 心跳
System.out.println("客户端ide:");
}
}
Mina使用总结(三)MinaClient的更多相关文章
- [置顶]
spring集成mina 实现消息推送以及转发
spring集成mina: 在学习mina这块时,在网上找了很多资料,只有一些demo,只能实现客户端向服务端发送消息.建立长连接之类.但是实际上在项目中,并不简单实现这些,还有业务逻辑之类的处理以及 ...
- 小程序的开发框架MINA及小程序的启动机制
MINA框架分三个部分 视图层(View):有很多页面,每个页面有wxml和wxss组成的,视图结构和展现样式 逻辑层(App Service):处理事物逻辑的地方以及数据交互的服务中心 系统层(Na ...
- dubbo学习 一 dubbo概述
1,背景 1,网站刚开时候的时候可能所有的功能业务都在一个应用里面 2,当业务不断复杂,流量不断增多的时候,就需要将原先的一个应用划分成多个独立的应用. 3,当分出来的业务越来越多的时候,应用 ...
- Mina、Netty、Twisted一起学(三):TCP消息固定大小的前缀(Header)
在上一篇博文中,有介绍到用换行符分割消息的方法.但是这种方法有个小问题,如果消息中本身就包含换行符,那将会将这条消息分割成两条,结果就不对了. 本文介绍另外一种消息分割方式,即上一篇博文中讲的第2条: ...
- Mina源码阅读笔记(三)-Mina的连接IoAccpetor
其实在mina的源码中,IoService可以总结成五部分service责任.Processor线程处理.handler处理器.接收器和连接器,分别对应着IoService.IoProcessor.I ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
转载 http://blog.csdn.net/cutesource/article/details/6192163 最后我们再看看NIO方面最著名的框架Mina,抛开Mina有关session和处理 ...
- Mina、Netty、Twisted一起学习(三):TCP前缀固定大小的消息(Header)
于以前的博文于,有介绍切割消息换行的方法. 但是有一个小问题,这样的方法,设消息中本身就包括换行符,那将会将这条消息切割成两条.结果就不正确了. 本文介绍第二种消息切割方式,即上一篇博文中讲的第2条: ...
- Mina airQQ聊天 client篇(三)
开发工具 (FlashBuilder4.7) 程序类型(Adobe Air) Flex Air做的桌面程序,效果还挺好看的.最主要是Socket这一块,它也是异步的,而且在Flex中的事件机制比較强大 ...
随机推荐
- BG.VM--CentOS
1. CentOS 更改IP 局域网配置: 在虚拟机的[网络]连接方式中选择:仅主机(Host-Only)网络. 路径:vim /etc/sysconfig/network-scripts/ifcfg ...
- 使用CSS进行定位
CSS中通过使用position属性,有4种不同类型的定位方式,这会影响元素框生成的方式. position属性值的含义: static:静态定位 元素框正常生成.块级元素生成一个矩形框,作为文档流的 ...
- WIN 10 初体验:期待越多失望越大
我大多数时候使用 MacBook,不过 WIN 10(预览版)的推送还是让我忍不住升级玩玩——它是微软史上首款真正意义上的免费操作系统,正式版将与中国诸多互联网巨头联合提供升级工具分发这一体现了微软迎 ...
- hdu 2030 统计汉字个数
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- JVM之---垃圾回收
JVM通过GC来回收堆和方法区中的内存,GC的基本原理首先会找到程序中不再被使用的对象,然后回收这些对象所占用的内存. 1.收集器 通常采用收集器的方式实现GC,主要的收集器有引用计数收集器和跟踪收集 ...
- JVM垃圾回收器之G1(Garbage First)--new
相比CMS收集器有两个显著的改进: (1). G1收集器是基于“标记-整理”算法实现的收集器,不会产生空间碎片 (2). 它可以精确地控制停顿,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在 ...
- JavaWeb学习总结(七):通过Servlet生成验证码及其应用 (BufferedImage类)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- css边框颜色渐变
在实际开发中,我们经常遇见边框需要背景渐变的实现要求,那么如何去实现呢,今天给大家分享依稀几种情况 1.直角的背景渐变 <!DOCTYPE html> <html lang=&quo ...
- 调用Android中的软键盘
我们在Android提供的EditText中单击的时候,会自动的弹 出软键盘,其实对于软键盘的控制我们可以通过InputMethodManager这个类来实现.我们需要控制软键盘的方式就是两种一个是像 ...
- UltraPtr下拉刷新
github: https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh <in.srain.cube.views.ptr.PtrF ...