mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a6965921 <963529...@qq.com>
Subject Re: mina receive
Date Sat, 15 Jun 2013 07:47:03 GMT
package mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
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.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaTimeServer {
	public static void main(String[] args) throws IOException {
		IoAcceptor acceptor = new NioSocketAcceptor();
		
		//This filter will log all information such as newly created 
			//sessions, messages received, messages sent, session closed
		acceptor.getFilterChain().addLast("logger", new LoggingFilter());
		//This filter will translate binary or protocol specific data into 
			//message object and vice versa. We use an existing TextLine 
			//factory because it will handle text base message for you (
			//you don't have to write the codec part)
		acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
				new TextLineCodecFactory(Charset.forName("UTF-8"))));
		
		acceptor.setHandler(new TimeServerHandler());
		
		acceptor.getSessionConfig().setReadBufferSize(BUF_SIZE);
		//the first parameter defines what actions to check for when 
			//determining if a session is idle, the second parameter defines 
			//the length of time in seconds that must occur before a session 
			//is deemed to be idle.
		acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
		
		acceptor.bind(new InetSocketAddress(PORT));
	}
	private static final int PORT = 8181,BUF_SIZE = 2048;
}


package mina;
import java.util.Date;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class TimeServerHandler extends IoHandlerAdapter {
	@Override
	public void exceptionCaught(IoSession session, Throwable cause)
			throws Exception {
		cause.printStackTrace();
	}
	@SuppressWarnings("deprecation")
	@Override
	public void messageReceived(IoSession session, Object message)
			throws Exception {
		System.out.println("receve");
		String str = message.toString();
		System.out.println("receve:"+str);
		if(str.trim().equalsIgnoreCase("quit")){
			session.close();
			return;
		}
		
		Date date = new Date();
		session.write(date.toString());
		System.out.println("receive and send.");
	}
	@Override
	public void messageSent(IoSession session, Object message) throws Exception
{
		super.messageSent(session, message);
	}
	@Override
	public void sessionClosed(IoSession session) throws Exception {
		super.sessionClosed(session);
		System.out.println("新客户端断开");
	}
	@Override
	public void sessionCreated(IoSession session) throws Exception {
		System.out.println("新客户端连接");
		super.sessionCreated(session);
	}
	@Override
	public void sessionIdle(IoSession session, IdleStatus status)
			throws Exception {
		System.out.println("连接空闲");
	}
	@Override
	public void sessionOpened(IoSession session) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("当连接后打开时触发此方法");
		super.sessionOpened(session);
	}
	
}




--
View this message in context: http://apache-mina.10907.n7.nabble.com/mina-receive-tp38218p38233.html
Sent from the Apache MINA Developer Forum mailing list archive at Nabble.com.

Mime
View raw message