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.先启动服务端,再启动客户端

Mina入门级客户端程序实现telnet程序的更多相关文章

  1. 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK

    LEADTOOLS Video Streaming Module控件为您创建一个自定义的视频会议应用程序和工具提供所有需要的功能.软件开发人员可以使用Video Streaming Module SD ...

  2. 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?

    文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...

  3. 免Oracle客户端程序监听程序配置

    Oracle默认安装时,监听程序和tnsnames程序中的监听方式都是默认的localhost,但免客户端的程序是连接不上的.这时需要: 1.将listener中的(HOST = localhost) ...

  4. 使用ADO连接oracle数据库“未找到提供程序。该程序可能未正确安装”解决方案

    问题描述:VS2010开发的C++程序,在一台Win7旗舰版的已安装Oracle客户端的PC上连接不上Oracle,提示“未找到提供程序.该程序可能未正确安装”,其他语言编写的程序比如C#是可以成功连 ...

  5. Web程序和应用程序服务器[转]

    转自:http://hi.baidu.com/lclkathy/blog/item/dae3be36763a47370b55a970.html 一 常见的WEB服务器和应用服务器 在UNIX和LINU ...

  6. 网页程序 vs 桌面程序

    网页程序 vs 桌面程序 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com 所谓的网页程序就是指以网页作为程序的操作界面,通过脚本语言“javascript”或其它客户端语言 ...

  7. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  8. python 之 Django框架(服务器程序和应用程序、基础必备三件套及相关配置)

    第十二章 Django框架 12.1 服务器程序和应用程序 服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理.应用程序则负责具体的逻辑处理.为了方便应用程序的开发, ...

  9. 小程序5:FTP程序

    目录 1.FTP程序所需要的知识点 2.FTP程序具体实现过程 2.1 FTP程序之注册功能 2.2 FTP程序之登录功能 2.3 FTP程序之下载功能 3.FTP程序源代码 FTP程序所需要的知识点 ...

随机推荐

  1. PAT(B) 1038 统计同成绩学生(C)统计

    题目链接:1038 统计同成绩学生 (20 point(s)) 题目描述 本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式 输入在第 1 行给出不超过 10​5​​ 的正整 ...

  2. mysql创建唯一索引UNIQUE INDEX,以及报错“#失败原因: [Execute: Duplicate entry '733186700' for key 'uniq_video_id_index']”

    要给t_video_prods表的video_id字段创建唯一所以,可以使用下面这条语句: alter table t_video_prods add UNIQUE INDEX `uniq_video ...

  3. Jmeter之分布式测试/压测

    Jmeter做分布式测试的原因: 测试机器的配置低,对服务器进行压测时,造成不了压力. jmeter并发10000后,测试机就已经卡顿了,而且测试结果有大量失败(忽略了jmeter自身问题=.=||| ...

  4. linux学习之路(三)--centos7安装mysql(单点)

    1.先检查系统是否装有mysql rpm -qa | grep mysql 返回空值,说明没有安装. 这里执行安装命令是无效的,因为centos-7默认是Mariadb,所以执行以下命令只是更新Mar ...

  5. JDK8源码解析 -- HashMap(一)

    最近一直在忙于项目开发的事情,没有时间去学习一些新知识,但用忙里偷闲的时间把jdk8的hashMap源码看完了,也做了详细的笔记,我会把一些重要知识点分享给大家.大家都知道,HashMap类型也是面试 ...

  6. 关于Windows下的访问控制模型

    在探索Windows操作系统的过程中,发现很多有意思 的东西. Windows下的访问控制模型也是我在Github上浏览代码时,无意中发现的. 项目地址 https://github.com/Krut ...

  7. Kafka架构和原理深度剖析

    Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率. ...

  8. 简单记录一次注入到shell

    0x00 前言 帮朋友之前拿的一个站,有点久了没有完整截图,简单记录一下. 0x01 基础信息 操作系统:win 集成环境:phpstudy 端口开放:82,3306,3389 有phpmyadmin ...

  9. 多线程之NSOperation简介

    在iOS开发中,为了提升用户体验,我们通常会将操作耗时的操作放在主线程之外的线程进行处理.对于正常的简单操作,我们更多的是选择代码更少的GCD,让我们专注于自己的业务逻辑开发.NSOperation在 ...

  10. 【JUC】2.synchronized

    synchronized关键字的用法也不做太多笔记了,简单回顾一下: synchronized三种使用方式: 修饰实例方法: 线程获取的是当前调用此方法的对象的对象头:即:锁是当前对象: public ...