本文整理汇总了Java中org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory类的典型用法代码示例。如果您正苦于以下问题:Java DemuxingProtocolCodecFactory类的具体用法?Java DemuxingProtocolCodecFactory怎么用?Java DemuxingProtocolCodecFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
DemuxingProtocolCodecFactory类属于org.apache.mina.filter.codec.demux包,在下文中一共展示了DemuxingProtocolCodecFactory类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: MyServer
import org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory; //导入依赖的package包/类
/**
* Constructor
*/
public MyServer() {
try {
acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("threadPool",
new ExecutorFilter(new OrderedThreadPoolExecutor()));// 设置线程池,以支持多线程
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
/**
* 默认编码器,解码器,遇到\n默认消息结束 当然可以加参数指定解码字符,但解码字符会被截掉 例如:new
* TextLineCodecFactory(Charset.forName("UTF-8"),"]","]");
* 则会认为"]"为一条消息结束,遇到"]"则截取 比如服务器给你发送的消息是aaaa]aaaa] 会收到两条消息: 1、aaaa
* 2、aaaa 后面的"]"则去掉了
*/
// acceptor.getFilterChain().addLast(
// "codec",
// new ProtocolCodecFilter(new TextLineCodecFactory(Charset
// .forName("UTF-8"))));// 指定编码过滤器
DemuxingProtocolCodecFactory pcf = new DemuxingProtocolCodecFactory();
// 自定义编码器
pcf.addMessageEncoder(String.class, new MyMessageEncoder());
// 自定义解码器
pcf.addMessageDecoder(new MyMessageDecoder());
ProtocolCodecFilter codec = new ProtocolCodecFilter(pcf);
acceptor.getFilterChain().addLast("codec", codec);// 指定编码过滤器
acceptor.setReuseAddress(true);
acceptor.setHandler(new ServerIoHandler());// 指定业务逻辑处理器
acceptor.setDefaultLocalAddress(new InetSocketAddress(8888));// 设置端口号
acceptor.bind();// 启动监听
} catch (Exception e) {
e.printStackTrace();
}
}
示例2: MyClient
import org.apache.mina.filter.codec.demux.DemuxingProtocolCodecFactory; //导入依赖的package包/类
/**
* Constructor
*/
public MyClient() {
connector = new NioSocketConnector();
/**
* 设置信息交换的IoHandler,负责接收和发送信息的处理
*/
connector.setHandler(new ClientIoHandler());
//配置过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
//增加日志过滤器
chain.addLast("logger", new LoggingFilter());
//增加字符编码过滤器以及设置编码器和解码器
//chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
/**
* 默认编码器,解码器,遇到\n默认消息结束
* 当然可以加参数指定解码字符,但解码字符会被截掉
* 例如:new TextLineCodecFactory(Charset.forName("UTF-8"),"]","]");
* 则会认为"]"为一条消息结束,遇到"]"则截取
* 比如服务器给你发送的消息是aaaa]aaaa]
* 会收到两条消息:
* 1、aaaa
* 2、aaaa
* 后面的"]"则去掉了
*/
// acceptor.getFilterChain().addLast(
// "codec",
// new ProtocolCodecFilter(new TextLineCodecFactory(Charset
// .forName("UTF-8"))));// 指定编码过滤器
DemuxingProtocolCodecFactory pcf = new DemuxingProtocolCodecFactory();
//自定义编码器
pcf.addMessageEncoder(String.class, new MyMessageEncoder());
//自定义解码器
pcf.addMessageDecoder(new MyMessageDecoder());
ProtocolCodecFilter codec = new ProtocolCodecFilter(pcf);
chain.addLast("codec",codec);// 指定编码过滤器
//设置默认连接的地址和端口
connector.setDefaultRemoteAddress(new InetSocketAddress("localhost", 8888));
/**
* 重连机制
* 如果没有连接,则过30 * 1000毫秒客户端会尝试重新连接服务器
* 如果连接,则下面的代码不会执行
*/
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if (null != connector && !connector.isActive()) {
try {
//尝试连接默认的地址和端口
ConnectFuture connFuture = connector.connect();
connFuture.awaitUninterruptibly();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
}, new Date(), 30 * 1000);
}