(一)

  1. package client;
  2.  
  3. import java.net.InetSocketAddress;
  4. import java.nio.charset.Charset;
  5.  
  6. import org.apache.mina.core.future.ConnectFuture;
  7. import org.apache.mina.core.session.IdleStatus;
  8. import org.apache.mina.core.session.IoSession;
  9. import org.apache.mina.filter.codec.ProtocolCodecFilter;
  10. import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
  11. import org.apache.mina.transport.socket.nio.NioSocketConnector;
  12.  
  13. public class MinaSimpleClient {
  14.  
  15. private static String HOSTNAME = "localhost";
  16.  
  17. private static int PORT = 9123;
  18.  
  19. public static void main(String[] args) throws InterruptedException {
  20. NioSocketConnector connector = new NioSocketConnector();
  21. // 设置编码解码器
  22. connector.getFilterChain().addLast("codec",
  23. new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
  24. // 设置Handler
  25. connector.setHandler(new ClientTimerHandler());
  26. // 获取连接,该方法为异步执行
  27. ConnectFuture future = connector.connect(new InetSocketAddress(HOSTNAME, PORT));
  28. // 设置空闲时间
  29. connector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
  30. // 等待连接建立
  31. future.awaitUninterruptibly();
  32. // 获取session
  33. IoSession session = future.getSession();
  34. // 等待session关闭
  35. session.getCloseFuture().awaitUninterruptibly();
  36. // 释放connector资源
  37. // 实际开发中,不要频繁关闭connector,因为它是重量级资源,应该设计成单例或者连接池
  38. connector.dispose();
  39.  
  40. }
  41. }

(二)

  1. package client;
  2.  
  3. import java.sql.Timestamp;
  4.  
  5. import org.apache.mina.core.service.IoHandlerAdapter;
  6. import org.apache.mina.core.session.IdleStatus;
  7. import org.apache.mina.core.session.IoSession;
  8.  
  9. public class ClientTimerHandler extends IoHandlerAdapter {
  10. // 当一个客户端连接到服务器之后
  11. // 当打开一个连接时被触发。在目前的实现中,好像 sessionOpened 和 sessionCreated 没有太大区别,
  12. @Override
  13. public void sessionOpened(IoSession session) throws Exception {
  14. System.out.println("连接到服务器");
  15. }
  16.  
  17. // 当消息创建时
  18. @Override
  19. public void sessionCreated(IoSession session) throws Exception {
  20. // session 创建时调用
  21. session.write("消息创建");
  22. System.out.println("消息创建");
  23. }
  24.  
  25. // 消息到达时
  26. @Override
  27. public void messageReceived(IoSession session, Object message) throws Exception {
  28. // 异步接收消息
  29. String str = message.toString();
  30. System.out.println("接收服务端消息:" + str);
  31. }
  32.  
  33. // 异常时调用
  34. @Override
  35. public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
  36. // 出现异常
  37. System.out.println("服务器端断了!");
  38. cause.printStackTrace();
  39. session.close(true);
  40. }
  41.  
  42. // 消息空闲时
  43. @Override
  44. public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
  45. System.out.println("[Time]:" + new Timestamp(System.currentTimeMillis()) + "连接空闲");
  46. if (session != null) {
  47. session.close();
  48. System.out.println("空闲时间过后,session被关闭");
  49. }
  50. }
  51.  
  52. // 当一个客户端关闭时
  53. @Override
  54. public void sessionClosed(IoSession session) {
  55. System.out.println("I'm Client =" + session.getId() + " I closed!");
  56. }
  57. }

Mina的客户端的更多相关文章

  1. Mina入门级客户端程序实现telnet程序

    Mina入门级客户端程序实现telnet程序,其实mina的客户端和服务端很相似 1.编写客户端MinaClient.java和客户端处理类MyClientHandler.java2.MinaClie ...

  2. 【Andorid开发框架学习】之Mina开发之客户端开发

    昨天我们讲到了Mina的基本知识点.如果还有不懂得同学可以看一下我昨天的博客.http://www.cnblogs.com/getherBlog/p/3934927.html今天我着重来讲一下基于Mi ...

  3. Mina TCP服务端客户端 示例

    服务端代码: package com.xd.nms.example; import java.io.IOException; import java.net.InetSocketAddress; im ...

  4. mina学习

    长连接表示一旦建立了链接,就可以长时间的保持双方的通讯,例如: socket链接,推送平台. 短链接表示建立链接,完成数据的交换之后,就断开链接,例如: http链接. mina 框架是对socket ...

  5. 【Andorid开发框架学习】之Mina开发之服务器开发

    下午那篇博客我们讲到了Mina的客户端的开发,如果还有没看过的同学可以看一下,我是传送门.现在,我们来学习一下,Mina的服务器的开发. 一.首先看一下,我的服务器的代码图片:  服务器代码我是在My ...

  6. Mina的线程模型

    在Mina的NIO模式中有三种I/O工作线程(这三种线程模型只在NIOSocket中有效,在NIO数据包和虚拟管道中没有,也不需要配置): IoAcceptor/IoConnector线程 IoPro ...

  7. Apache Mina原理及典型例子分析

    Apache Mina ,一个高性能 Java 异步并发网络通讯框架.利用 Mina 可以高效地完成以下任务: TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯 SSL/TLS JX ...

  8. MINA学习之体系介绍

    基于MINA应用程序结构图: 我们可以看出,MINA是应用程序(客户端或服务端)和底层基于TCP,UDP等通讯协议的网络层之间的粘合剂.而且各个模块之间是相互独立的,你只需要在MINA体 系基础上设计 ...

  9. mina 实例(转载)

    mina:http://mina.apache.org/ 原文:http://maosheng.iteye.com/blog/1891665 大并发量socket 通信框架MINA介绍 博客分类: J ...

随机推荐

  1. ZOJ2482 IP Address 2017-04-18 23:11 44人阅读 评论(0) 收藏

    IP Address Time Limit: 2 Seconds      Memory Limit: 65536 KB Suppose you are reading byte streams fr ...

  2. mysql中设置默认字符编码为utf-8

    使用过Linux的同志就知道,在Linux下安装mysql,尤其是使用yum安装的时候,我们是没法选择其默认的字符编码方式.这个就是一个比较头痛的问题,如果Linux数据库中使用到中文的时候,乱码问题 ...

  3. DelphiXE10.2怎么安装文本转语音(TTS)语音转文本(SR)控件(XE10.2+WIN764)

    关资料: http://edn.embarcadero.com/article/29583 http://blog.sina.com.cn/s/blog_53866d7501017r1o.html 问 ...

  4. 在ANTMINER(阉割版BeagleBone Black)运行Debain

    开门见山,直入主题 咸鱼入手3块阉割ARM板,经过快递近6天运输到手,不过价格便宜 东西下面这样的(借了咸鱼的图): 发现这块板是阉割版的国外beagleboard.org型号为BeagleBone ...

  5. C#图片处理,缩略图制作

    准备参数:图片文件流.文件名 方法:1.先将图片流通过System.Drawing.Image.FromStream方法转成图片对象 2.通过图片对象.GetThumbnailImage方法生成自定义 ...

  6. Java 类型转换工具类(持续更新)

    简介 将项目中用到的类型转换做个记录. 详细代码 @Component public class TypeUtil { // [start]字符串转各种格式 // 字符串转日期(格式:"yy ...

  7. Buck工作原理分析,连续模式,断续模式

    Part01:Buck电路工作原理: 图1-1 Buck电路拓扑结构 Buck电路的拓扑结构如图1-1所示: (1) input接输入电源,既直流电动势: (2) IGBT1为开关管,可以选择以全控型 ...

  8. celery_消息队列

    http://www.cnblogs.com/wupeiqi/articles/8796552.html 一. celery 简介 Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时 ...

  9. 没有过的题QAQ

    持续更新...纪念一下我的高分暴力...(好丢人啊qwq) NOI2014 动物园 80pts 用倍增暴力跳nxt数组 #include<iostream> #include<cst ...

  10. C/C++ 语言 Hello world

    #include <stdio.h> void main() { int x,i; ; scanf("%d",&x); if(x>y) printf(&q ...