mina两种协议获取方式(TCP/UDP)
2017-05-27 15:39
330 查看
package com.lzo.mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.util.concurrent.Executors;
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.textline.TextLineCodecFactory;
import org.apache.mina.filter.executor.ExecutorFilter;
import org.apache.mina.filter.keepalive.KeepAliveFilter;
import org.apache.mina.filter.keepalive.KeepAliveMessageFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.DatagramSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaTimeServer {
/**
* main主要针对udp协议进行数据端口监听接收。
* @param args
*/
public static void main(String[] args) {
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
acceptor.getFilterChain()
.addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
KeepAliveMessageFactory heartBeatFactory = new KeepAliveMessageFactoryImpl();
KeepAliveFilter heartBeat = new KeepAliveFilter(heartBeatFactory,
IdleStatus.BOTH_IDLE,new RequestTimeoutCloseHandler());
//设置是否forward到下一个filter
heartBeat.setForwardEvent(true);
//设置心跳频率
heartBeat.setRequestInterval(50);
acceptor.getFilterChain().addLast("heartbeat", heartBeat);
acceptor.setHandler(new MyIoHandler());//自己的业务逻辑处理类
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReuseAddress(true);
acceptor.bind(new InetSocketAddress(4567));
}
/**
* main1主要针对tcp协议来进行监听处理。
* @param args
*/
public static void main1(String[] args) throws IOException {
// TODO Auto-generated method stub
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"))));
acceptor.setHandler(new TimeServerHandler());
acceptor.getSessionConfig().setReadBufferSize(BUF_SIZE);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
acceptor.bind(new InetSocketAddress(PORT));
}
private static final int PORT = 8181,BUF_SIZE = 2048;
}
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.util.concurrent.Executors;
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.textline.TextLineCodecFactory;
import org.apache.mina.filter.executor.ExecutorFilter;
import org.apache.mina.filter.keepalive.KeepAliveFilter;
import org.apache.mina.filter.keepalive.KeepAliveMessageFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.DatagramSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaTimeServer {
/**
* main主要针对udp协议进行数据端口监听接收。
* @param args
*/
public static void main(String[] args) {
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
acceptor.getFilterChain()
.addLast("threadPool", new ExecutorFilter(Executors.newCachedThreadPool()));
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
KeepAliveMessageFactory heartBeatFactory = new KeepAliveMessageFactoryImpl();
KeepAliveFilter heartBeat = new KeepAliveFilter(heartBeatFactory,
IdleStatus.BOTH_IDLE,new RequestTimeoutCloseHandler());
//设置是否forward到下一个filter
heartBeat.setForwardEvent(true);
//设置心跳频率
heartBeat.setRequestInterval(50);
acceptor.getFilterChain().addLast("heartbeat", heartBeat);
acceptor.setHandler(new MyIoHandler());//自己的业务逻辑处理类
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReuseAddress(true);
acceptor.bind(new InetSocketAddress(4567));
}
/**
* main1主要针对tcp协议来进行监听处理。
* @param args
*/
public static void main1(String[] args) throws IOException {
// TODO Auto-generated method stub
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"))));
acceptor.setHandler(new TimeServerHandler());
acceptor.getSessionConfig().setReadBufferSize(BUF_SIZE);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
acceptor.bind(new InetSocketAddress(PORT));
}
private static final int PORT = 8181,BUF_SIZE = 2048;
}
相关文章推荐
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- 基于mina架构的JTT808协议两种解码方式性能比较
- 两种网络协议的比较(TCP&UDP)
- 基于.Net3.5编写,全异步操作。支持TCP、UDP两种方式,全事件模式通知。
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- 简述TCP和UDP两种协议的主要特点及其异同
- 小结哈TCP与UDP两种协议及其应用范围
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- java中TCP和UDP两种协议的区别?
- mina使用UDP协议的小结
- UDP TCP支持的一些协议类型
- TCP、UDP协议详解
- TCP/IP 协议之 UDP协议
- linxu kernel version 1.0 TCP/IP 协议栈源代码分析1, UDP协议发送数据.
- 在JSP页面获取时间的两种方式
- 应用程序接口有两种方式--API和协议