标签:
Apache MINA是“Multipurpose Infrastructure for Network Applications”的简写,它是用于开发高性能和高可扩展性的网络应用程序的基础框架。该框架有如下优点:StartMinaClient.java文件中的代码:
package com.ghj.packageofclient;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.common.CloseFuture;
import org.apache.mina.common.ConnectFuture;
import org.apache.mina.common.DefaultIoFilterChainBuilder;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
/**
* 启动mina客户端
*
* @author 高焕杰
*/
public class StartMinaClient {
public static void main(String[] args) {
NioSocketConnector connector = new NioSocketConnector();//创建客户端连接器
DefaultIoFilterChainBuilder filterChain = connector.getFilterChain();
filterChain.addLast("logger", new LoggingFilter());//设置日志工厂过滤器
filterChain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));//设置文本编解码过滤器
connector.setConnectTimeout(3000);//设置连接超时时间(单位毫秒)
connector.setHandler(new ClientHandlerAdapter());//设置事件处理器
connector.getSessionConfig().setReadBufferSize(1024);//设置读缓冲区大小
connector.getSessionConfig().setWriteTimeout(1000); //设置写操作的超时时间
connector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 3);//第一个参数用于指定空闲状态,第二个参数用于指定Session的闲置时间(单位秒),此处含义为:读写 通道均在3 秒内无任何操作就进入空闲状态
ConnectFuture connectFuture = connector.connect(new InetSocketAddress("127.0.0.1", 9123));//建立连接
connectFuture.awaitUninterruptibly();//等待连接创建完成
IoSession session = connectFuture.getSession();//保存会话属性和发送消息
session.write("你好 Apache Mina服务器端!!!");//发送消息
session.write("quit"); //发送消息
CloseFuture future = session.getCloseFuture();
future.awaitUninterruptibly();//等待连接断开
future.awaitUninterruptibly(1000);//等待连接断开
connector.dispose();
}
} StartMinaServer.java文件中的代码:
package com.ghj.packageofserver;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.common.DefaultIoFilterChainBuilder;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
* 启动mina服务端
*
* @author 高焕杰
*/
public class StartMinaServer {
public static void main(String[] args) {
IoAcceptor acceptor = new NioSocketAcceptor();//创建服务端监听
acceptor.setHandler(new ServerHandlerAdapter());//为该acceptor设置用于业务处理的Hanlder实例
acceptor.getSessionConfig().setReadBufferSize(1024);//设置读缓冲区大小
acceptor.getSessionConfig().setWriteTimeout(1000); //设置写操作的超时时间
DefaultIoFilterChainBuilder filterChain = acceptor.getFilterChain();
filterChain.addLast("logger", new LoggingFilter());//设置日志工厂过滤器
filterChain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));//设置文本编解码过滤器
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 3);//第一个参数用于指定空闲状态,第二个参数用于指定Session的闲置时间(单位秒),此处含义为:读写 通道均在3 秒内无任何操作就进入空闲状态
try {
acceptor.bind(new InetSocketAddress(9123));//绑定监听端口
System.out.println("服务器启动成功");
} catch (IOException e) {
System.out.println("服务器启动失败");
e.printStackTrace();
}
}
} 【0分下载该示例代码】标签:
原文地址:http://blog.csdn.net/gaohuanjie/article/details/43764075