一个Mina实例
来源:互联网 发布:vb编程软件中文下载 编辑:程序博客网 时间:2024/05/21 20:21
版权声明:本文为博主原创文章,未经博主允许不得转载。
本实例是参考Mina官网的实例更改的,也添加了自己的一些东西,也解决了有些同学遇到乱码的情况。
不多说了,直接放代码:
客服端:
MimaTimeClient.java
- package minaExamle.client;
- import java.net.InetSocketAddress;
- import java.nio.charset.Charset;
- import java.util.Scanner;
- import minaExamle.common.BaseConfig;
- import org.apache.mina.core.future.ConnectFuture;
- 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.prefixedstring.PrefixedStringCodecFactory;
- import org.apache.mina.filter.logging.LoggingFilter;
- import org.apache.mina.transport.socket.nio.NioSocketConnector;
- public class MimaTimeClient {
- public static void main(String[] args) {
- IoConnector connector = new NioSocketConnector();
- connector.getFilterChain().addLast( "logger", new LoggingFilter() );
- connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new PrefixedStringCodecFactory(Charset.forName("UTF-8"))));
- connector.setHandler(new TimeClientHander());
- ConnectFuture connectFuture = connector.connect(new InetSocketAddress("127.0.0.1",BaseConfig.PORT));
- //等待建立连接
- connectFuture.awaitUninterruptibly();
- System.out.println("连接成功");
- IoSession session = connectFuture.getSession();
- Scanner sc = new Scanner(System.in);
- boolean quit = false;
- while(!quit){
- String str = sc.next();
- if(str.equalsIgnoreCase("quit")){
- quit = true;
- }
- session.write(str);
- }
- //关闭
- if(session!=null){
- if(session.isConnected()){
- session.getCloseFuture().awaitUninterruptibly();
- }
- connector.dispose(true);
- }
- }
- }
- package minaExamle.client;
- import org.apache.mina.core.service.IoHandler;
- import org.apache.mina.core.session.IdleStatus;
- import org.apache.mina.core.session.IoSession;
- public class TimeClientHander implements IoHandler {
- @Override
- public void exceptionCaught(IoSession arg0, Throwable arg1)
- throws Exception {
- // TODO Auto-generated method stub
- arg1.printStackTrace();
- }
- @Override
- public void messageReceived(IoSession arg0, Object message) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("client接受信息:"+message.toString());
- }
- @Override
- public void messageSent(IoSession arg0, Object message) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("client发送信息"+message.toString());
- }
- @Override
- public void sessionClosed(IoSession session) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("client与:"+session.getRemoteAddress().toString()+"断开连接");
- }
- @Override
- public void sessionCreated(IoSession session) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("client与:"+session.getRemoteAddress().toString()+"建立连接");
- }
- @Override
- public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
- // TODO Auto-generated method stub
- System.out.println( "IDLE " + session.getIdleCount( status ));
- }
- @Override
- public void sessionOpened(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("打开连接");
- }
- }
服务端:
MinaTimeServer.java
- package minaExamle.server;
- import java.io.IOException;
- import java.net.InetSocketAddress;
- import java.nio.charset.Charset;
- import minaExamle.common.BaseConfig;
- import org.apache.mina.core.service.IoAcceptor;
- import org.apache.mina.core.session.IdleStatus;
- import org.apache.mina.filter.codec.ProtocolCodecFilter;
- import org.apache.mina.filter.codec.prefixedstring.PrefixedStringCodecFactory;
- import org.apache.mina.filter.logging.LoggingFilter;
- import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
- public class MinaTimeServer {
- private static final int PORT= BaseConfig.PORT;
- public static void main(String[] args) throws IOException {
- IoAcceptor acceptor = new NioSocketAcceptor();
- acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
- acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new PrefixedStringCodecFactory(Charset.forName("UTF-8"))));
- acceptor.setHandler( new TimeServerHandler() );
- acceptor.getSessionConfig().setReadBufferSize( 2048 );
- acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
- acceptor.bind(new InetSocketAddress(PORT));
- }
- }
TimeServerHandler.java
- package minaExamle.server;
- import java.util.Date;
- import org.apache.mina.core.service.IoHandler;
- import org.apache.mina.core.session.IdleStatus;
- import org.apache.mina.core.session.IoSession;
- public class TimeServerHandler implements IoHandler {
- @Override
- public void exceptionCaught(IoSession arg0, Throwable arg1)
- throws Exception {
- arg1.printStackTrace();
- }
- @Override
- public void messageReceived(IoSession session, Object message) throws Exception {
- String str = message.toString();
- System.out.println("接受到的消息:"+str);
- if( str.trim().equalsIgnoreCase("quit") ) {
- session.close(true);
- return;
- }
- Date date = new Date();
- session.write( date.toString() );
- System.out.println("Message written...");
- }
- @Override
- public void messageSent(IoSession arg0, Object arg1) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("发送信息:"+arg1.toString());
- }
- @Override
- public void sessionClosed(IoSession session) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("IP:"+session.getRemoteAddress().toString()+"断开连接");
- }
- @Override
- public void sessionCreated(IoSession session) throws Exception {
- // TODO Auto-generated method stub
- System.out.println("IP:"+session.getRemoteAddress().toString());
- }
- @Override
- public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
- // TODO Auto-generated method stub
- System.out.println( "IDLE " + session.getIdleCount( status ));
- }
- @Override
- public void sessionOpened(IoSession arg0) throws Exception {
- // TODO Auto-generated method stub
- }
- }
BaseConfig.java
- package minaExamle.common;
- public class BaseConfig {
- //服务器端口
- public static final int PORT = 9123;
- }
服务端运行截图
客服端运行截图
0 0
- 一个Mina实例
- 一个Mina实例
- 一个Mina实例
- mina实例
- apache mina 实例
- Mina Server实例
- 学习mina实例~
- Apache Mina实例
- mina客户端实例
- Mina入门实例
- Apache Mina 入门实例
- Apache Mina 入门实例
- Mina框架实例
- Apache的Mina简单实例
- Socket网络编程-Mina 实例
- Apache MINA 基于TCP实例
- Apache MINA 基于UDP实例
- Apache的Mina简单实例
- Cordova插件开发入门(1)
- dw1000精度调节记录1
- XML解析三 使用PULL解析XML
- JS 替换 window.onload 的 document.ready
- Properties的使用
- 一个Mina实例
- 一个色谱的实现
- Hog特征
- C++笔记——多态原理探究
- android 应用调用QQ交流,类似客服
- maven的使用
- php7
- node学习开始啦。
- 代码原则四