Try client sends more than 100. Make it 100000 and see.

On 10/22/07, tiandike <[EMAIL PROTECTED]> wrote:
>
>
> thougth my client  send some requests in one connector , the server handle
> these request in mutithread.
> if the client send request b after request a ,but the server handle b
> faster than a  and in this condition can my client receive the response b
> first?
>
>
>
> mat-29 wrote:
> >
> > 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
> >> .
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/why-client-received-message-in-order--tf4668688s16868.html#a13338571
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com
> .
>
>

Reply via email to