mina两种协议获取方式(TCP/UDP)

来源:互联网 发布:网络传播营销策划案 编辑:程序博客网 时间:2024/06/06 13:34
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;  




}

























阅读全文
0 0
原创粉丝点击