You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Aaron Tang <ga...@gmail.com> on 2005/04/25 13:12:06 UTC

[Mina]How to build a synchronized client application based on MINA?

Hi all,
 
I wanna build a synchronized client application, i.e., client send a request
to server -> server send back its response
-> client get it! -> ...
 
I based my work on the reverser example, but my ACCEPTOR receive nothing:(,
but the server really send its response
back, which I can see with a network monitor app.
 
Please help by pointing out my misunderstanding and misusage of MINA!
 
This is my Main code, others is the same with reverser example.
 
public class Main
{
    private static final int PORT = 7910;
    private static final int LOCAL_PORT = 8888;
    private static final String HOST = "222.66.24.241";
 
    public static void main( String[] args ) throws Exception
    {
        // Create I/O and Protocol thread pool filter.
        // I/O thread pool performs encoding and decoding of messages.
        // Protocol thread pool performs actual protocol flow.
        IoThreadPoolFilter ioThreadPoolFilter = new IoThreadPoolFilter();
        ProtocolThreadPoolFilter protocolThreadPoolFilter = new
ProtocolThreadPoolFilter();
 
        // and start both.
        ioThreadPoolFilter.start();
        protocolThreadPoolFilter.start();
 
        InetSocketAddress localAddress = new InetSocketAddress(LOCAL_PORT);
        InetSocketAddress remoteAddress = new InetSocketAddress(HOST,PORT);
        ReverseProtocolProvider provider = new ReverseProtocolProvider();
        
        // Create a TCP/IP acceptor.
        IoProtocolAcceptor acceptor = new IoProtocolAcceptor(
                new SocketAcceptor() );
 
        // Add both thread pool filters.
        acceptor.getIoAcceptor().getFilterChain().addFirst(
                "threadPool", ioThreadPoolFilter );
        acceptor.getFilterChain().addFirst(
                "threadPool", protocolThreadPoolFilter );
 
        // Bind
        acceptor.bind( localAddress,provider );
 
        System.out.println( "Listening on port " + LOCAL_PORT );
        
        IoProtocolConnector connector = new IoProtocolConnector(new
SocketConnector());
 
connector.getIoConnector().getFilterChain().addFirst("threadPool",ioThreadPo
olFilter);
 
connector.getFilterChain().addFirst("threadPool",protocolThreadPoolFilter);
        
 
        ProtocolSession session =
connector.connect(remoteAddress,localAddress,provider);
        session.write("004208010101000000000000000000000000000110");
    }
}

Re: [Mina]How to build a synchronized client application based on MINA?

Posted by Trustin Lee <tr...@gmail.com>.
Hi Tang,

You don't need to use acceptor to build a client.  Acceptors are used
to build servers.You should use just a connector to create a client. 
Could you please refer to NetCat example?

Thanks,
Trustin

2005/4/25, Aaron Tang <ga...@gmail.com>:
> Hi all,
>  
> I wanna build a synchronized client application, i.e., client send a request
> to server -> server send back its response
> -> client get it! -> ...
>  
> I based my work on the reverser example, but my ACCEPTOR receive nothing:(,
> but the server really send its response
> back, which I can see with a network monitor app.
>  
> Please help by pointing out my misunderstanding and misusage of MINA!
>  
> This is my Main code, others is the same with reverser example.
>  
> public class Main
> {
>     private static final int PORT = 7910;
>     private static final int LOCAL_PORT = 8888;
>     private static final String HOST = "222.66.24.241";
>  
>     public static void main( String[] args ) throws Exception
>     {
>         // Create I/O and Protocol thread pool filter.
>         // I/O thread pool performs encoding and decoding of messages.
>         // Protocol thread pool performs actual protocol flow.
>         IoThreadPoolFilter ioThreadPoolFilter = new IoThreadPoolFilter();
>         ProtocolThreadPoolFilter protocolThreadPoolFilter = new
> ProtocolThreadPoolFilter();
>  
>         // and start both.
>         ioThreadPoolFilter.start();
>         protocolThreadPoolFilter.start();
>  
>         InetSocketAddress localAddress = new InetSocketAddress(LOCAL_PORT);
>         InetSocketAddress remoteAddress = new InetSocketAddress(HOST,PORT);
>         ReverseProtocolProvider provider = new ReverseProtocolProvider();
>         
>         // Create a TCP/IP acceptor.
>         IoProtocolAcceptor acceptor = new IoProtocolAcceptor(
>                 new SocketAcceptor() );
>  
>         // Add both thread pool filters.
>         acceptor.getIoAcceptor().getFilterChain().addFirst(
>                 "threadPool", ioThreadPoolFilter );
>         acceptor.getFilterChain().addFirst(
>                 "threadPool", protocolThreadPoolFilter );
>  
>         // Bind
>         acceptor.bind( localAddress,provider );
>  
>         System.out.println( "Listening on port " + LOCAL_PORT );
>         
>         IoProtocolConnector connector = new IoProtocolConnector(new
> SocketConnector());
>        
> connector.getIoConnector().getFilterChain().addFirst("threadPool",ioThreadPoolFilter);
>        
> connector.getFilterChain().addFirst("threadPool",protocolThreadPoolFilter);
>         
>  
>         ProtocolSession session =
> connector.connect(remoteAddress,localAddress,provider);
>        
> session.write("004208010101000000000000000000000000000110");
>     }
> }


-- 
what we call human nature is actually human habit
--
http://gleamynode.net/