发表时间:2010-01-22
最后修改:2010-01-22
package cn.com.unutrip.java.opensource.mina.guide;
import java.net.InetSocketAddress;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.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;
/**
*
* 常用的客户端对象IoConnector 和NioSocketConnector
* @author longgangbai
*
*/
public class IoHandlerStyleTimeClient {
private static final Log log = LogFactory
.getLog(IoHandlerStyleTimeClient.class);
public static void main(String[] args) {
//创建一个客户端连接器对象
//IoConnector 不仅仅对应单个客户端套接字,而是一个客户端套接字工厂
//利用IoConnector 对不同的远端地址,发起连接,便可以得到多个对应于客户端与不同服务端监听地址所建立TCP连接的的IoSession对象
IoConnector connector = new NioSocketConnector();
//设置IOHandler的处理器:正常情况下为重写方法
connector.setHandler(new IoHandlerAdapter() {
@Override
public void messageReceived(final IoSession session,
final Object mesage) {
log.info(mesage);
}
});
//设置文本编解码过滤器工厂
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory()));
//设置日志工厂过滤器
connector.getFilterChain().addLast("logging", new LoggingFilter());
//设置连接的服务主机和IP
connector.connect(new InetSocketAddress(8123));
//销毁客户端对象
connector.dispose();
}
}