java MinaServer

来源:互联网 发布:肖申克的救赎知乎 编辑:程序博客网 时间:2024/05/21 22:32
package com.MinaServer;


import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;


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.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;


import com.MinaService.MinaSessionHandler;


public class MinaServer implements Runnable{


/**
* 网络连接管理器构造方法,开启TCP网络连接线程
*/
public MinaServer() {
new Thread(this).start();
}

public static void createServer(){
NioSocketAcceptor acceptor = new NioSocketAcceptor(1);
acceptor.getFilterChain().addLast("Logger", new LoggingFilter());
acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
acceptor.setHandler(new MinaSessionHandler());
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setReceiveBufferSize(2048);
acceptor.getSessionConfig().setSendBufferSize(4096);
acceptor.getSessionConfig().setTcpNoDelay(true);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 60);
try {
acceptor.bind(new InetSocketAddress(9888));
} catch (IOException e) {
e.printStackTrace();
}
}


/**
* 关闭网络
*/
public void stopNetwork() {
return;
}

@Override
public void run() {

}

}







package com.MinaService;


import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;


public class MinaSessionHandler extends IoHandlerAdapter{



@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("-------------服务端接收到的客户端发送的消息(服务器端)-------------:" + message);
super.messageReceived(session, message);
session.write(message);
}


@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
if (session.isConnected()) {
session.close(true);
}
System.out.println("-------------抛出异常(服务器端)-------------");
}


@Override
public void messageSent(IoSession session, Object message) throws Exception {
session.write("-----------------返给客户端的消息:我已收到你传来的消息(服务器端)-------------"+ message.toString());
System.out.println("-------------服务端向客户端发送消息(服务器端)-------------" + message.toString());
}


@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
System.out.println("-------------session关闭(服务器端)-------------");
}


@Override
public void sessionCreated(IoSession session) throws Exception {
session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30000);
System.out.println("-------------创建消息(服务器端)-------------");
}


@Override
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
session.close(true);
System.out.println("-------------闲时触发(服务器端)-------------");
}


@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
System.out.println("-------------创建链接(服务器端)-------------");
}





}

0 0
原创粉丝点击