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.