I didn't see why NOT if in your client side only single thread sending the
message.

On 10/22/07, tiandike <[EMAIL PROTECTED]> wrote:
>
>
> I modified the example of echoserver
>
> in my code I disable the default ThreadModel setting and configure the
> number of  I/O processor thread.
>
>
> I don't understand why my client can receive the results in order?
> Thanks!
>
> the code and the result is below:
>
> /////////////////////////////////
> the main class is :
> public class Main {
>    /** Choose your favorite port number. */
>    private static final int PORT = 8080;
>
>    public static void main(String[] args) throws Exception {
>        int num = Runtime.getRuntime().availableProcessors() * 3;
>        IoAcceptor acceptor = new SocketAcceptor(num,
> Executors.newCachedThreadPool());
>        IoAcceptorConfig config = new SocketAcceptorConfig();
>        config.setThreadModel(ThreadModel.MANUAL);
>        DefaultIoFilterChainBuilder chain = config.getFilterChain();
>        chain.addLast("threadPool", new
> ExecutorFilter(Executors.newCachedThreadPool()));
>
>        acceptor.bind(new InetSocketAddress(PORT), new
> EchoProtocolHandler1(),
>                config);
>        System.out.println("Listening on port " + PORT);
>    }
>
> }
>
>
> /////////////////////////////////
> EchoProtocolHandler1.java
>
> public class EchoProtocolHandler1 extends IoHandlerAdapter {
>        private static Random r=new Random();
>        private static final Logger log = LoggerFactory
>                        .getLogger(EchoProtocolHandler.class);
>
>
>
>        public void exceptionCaught(IoSession session, Throwable cause) {
>                cause.printStackTrace();
>                session.close();
>        }
>
>        public void messageReceived(IoSession session, Object message)
>                        throws Exception {
>                if (!(message instanceof ByteBuffer)) {
>                        return;
>                }
>                Thread.currentThread().sleep(r.nextInt(1000));
>
>                ByteBuffer rb = (ByteBuffer) message;
>                // Write the received data back to remote peer
>                ByteBuffer wb = ByteBuffer.allocate(rb.remaining());
>                wb.put(rb);
>                wb.flip();
>
>
>                session.write(wb);
>        }
>
> }
>
> ////////////////////////////////////////////
> and my client handler:
>
> public class ClientHandler extends IoHandlerAdapter {
>
>        private int num=0;
>
>        public ClientHandler(int num){
>                this.num=num;
>        }
>
>
>        @Override
>        public void sessionOpened(IoSession session) throws Exception {
>
>                for (int i = 0; i < num; i++) {
>                        session.write(String.valueOf(i));
>
>                }
>        }
>        @Override
>        public void messageReceived(IoSession session, Object message)
>                        throws Exception {
>
>                System.out.println("messageReceived:"+message);
>        }
>
>
> }
>
>
> //////////////////////////////////////////////
> and ClientMain :
>
> public class ClientMain {
>
>        private static final String HOSTNAME = "localhost";
>        private static final int PORT = 8080;
>
>        /**
>         * @param args
>         */
>        public static void main(String[] args) {
>                InetSocketAddress socketAddress = new
> InetSocketAddress(HOSTNAME, PORT);
>                IoServiceConfig config = new SocketConnectorConfig();
>                config.setThreadModel(ThreadModel.MANUAL);
>                DefaultIoFilterChainBuilder chain = config.getFilterChain
> ();
>
>        chain.addLast("threadPool", new
> ExecutorFilter(Executors.newCachedThreadPool()));
>
>        int num=100;
>
>        SocketConnector connector=new SocketConnector();
>
>        ConnectFuture future = connector.connect(new InetSocketAddress(
>                HOSTNAME, PORT), new ClientHandler(num), config);
>
>        future.join();
>
>
>        }
>
> }
> ///////////////////////////////////////////////////////////////
> in eclipse console:
>
> messageReceived:0
> messageReceived:1
> messageReceived:2
> messageReceived:3
> messageReceived:4
> messageReceived:5
> messageReceived:6
> messageReceived:7
> messageReceived:8
> messageReceived:9
> messageReceived:10
> messageReceived:11
> messageReceived:12
> messageReceived:13
> messageReceived:14
> messageReceived:15
> messageReceived:16
> messageReceived:17
> messageReceived:18
> messageReceived:19
> messageReceived:20
> messageReceived:21
> messageReceived:22
> messageReceived:23
> messageReceived:24
> ........
> messageReceived:99
>
> --
> View this message in context:
> http://www.nabble.com/why-client-received-message-in-order--tf4668688s16868.html#a13336726
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com
> .
>
>

Reply via email to