Mina入门级客户端程序实现telnet程序,其实mina的客户端和服务端很相似

1.编写客户端MinaClient.java和客户端处理类MyClientHandler.java
2.MinaClient.java

package com.mina;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

public class MinaClient {
//客户端需要定义IP地址和端口
private static String host="127.0.0.1";
private static int port=7080;
public static void main(String[] args) {

IoSession session=null;
//MINA提供IOConnector
IoConnector connector=new NioSocketConnector();
//设置超时时间
connector.setConnectTimeout(3000);
//设置过滤器,主要完成编码工作
connector.getFilterChain().addLast("coderc",
//指定编码解码器
new ProtocolCodecFilter(new TextLineCodecFactory(
Charset.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue()
)));
//设置业务方法
connector.setHandler(new MyClientHandler());
//获得会话连接
ConnectFuture future=connector.connect(new InetSocketAddress(host,port));
//设置等待连接,完成连接后获得session
future.awaitUninterruptibly();
//获得session
session=future.getSession();
//往session中写入数据
session.write("你好,我是赵云!!!");
//设置服务端收到exit退出,等待关闭连接
session.getCloseFuture().awaitUninterruptibly();
//对connector实现dispose()方法
connector.dispose();
}
}

2.MyClientHandler.java

package com.mina;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
/**
* 自己的业务处理类
* 选中自己的类,source-->run as-->implement methods
* @author xjj13
*
*/
public class MyClientHandler extends IoHandlerAdapter{
//发生异常时,输出
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
System.out.println("exceptionCaught");
}

//获得信息时
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
String msg=(String)message;
System.out.println("客户端收到数据:"+msg);
}

}
3.先启动服务端,再启动客户端

最新文章

  1. [转载]python中的sys模块(二)
  2. MySQL数据库中tinyint类型字段读取数据为true和false
  3. ansible非root用户批量修改root密码
  4. split shell tools
  5. (转)POJ题目分类
  6. kafka 安装
  7. elixir 高可用系列(四) Task
  8. C#入门经典第五版之变量与表达式编码题训练
  9. easyui动态生成列
  10. phpcms V9 默认模板文件目录结构_PHPCms教程
  11. 【前端基础系列】slice方法将类数组转换数组实现原理
  12. HDU 4825 Xor Sum (模板题)【01字典树】
  13. PHP Echarts Ajax Json柱形图示例
  14. EXpression 表达式目录树
  15. groovy 从jsonList中读取某个字段
  16. Eigen教程(11)
  17. 谈谈java中的final关键字
  18. 一个简单的Linux后门程序的实现
  19. spring mvc中的一些注释:@PathVariable @RequestParam等
  20. 20164317《网络对抗技术》Exp4 恶意代码分析

热门文章

  1. Python——raise引发异常
  2. docker 实践四:数据管理
  3. spring 条件化配置
  4. hdu 3265 第一类斯特林数
  5. Oracle触发器编译错误及解决方案
  6. .net core使用CSRedisCore连接哨兵集群,并用作redis使用分布式缓存。
  7. ECMAScript5面向对象技术(1)--原始类型和引用类型
  8. Android NDK 学习之在C中调用Java的变量和静态变量
  9. 如何给SAP云平台的账号分配Leonardo机器学习服务的实例
  10. LCD驱动的学习