mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "derek@user1.net" <de...@user1.net>
Subject Re: mina receive
Date Mon, 17 Jun 2013 00:12:46 GMT
According to the Javadoc the default delimiter of TextLineCodecFactory is
the UNIX LineDelimiter. You should change your code so that when you
instantiate your TextLineCodecFactory you are passing the NULL character.
Example:

acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
                                new
TextLineCodecFactory(Charset.forName("UTF-8"),
"\0", "\0")));


On Sat, Jun 15, 2013 at 3:47 AM, a6965921 <963529987@qq.com> wrote:

> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message