您的位置:首页 > 理论基础 > 计算机网络

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;  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: