Here is the code - if someone else would like to check what I am seeing.

>>> First the client


import java.net.InetSocketAddress;

import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.future.IoFutureListener;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.transport.socket.nio.NioDatagramConnector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UDPTestClient extends IoHandlerAdapter {

    private final static Logger LOGGER =
LoggerFactory.getLogger(UDPTestClient.class);

    private IoSession session;
    private IoConnector connector;

    /**
     * Default constructor.
     */
    public UDPTestClient() {

        LOGGER.debug("UDPClient::UDPClient");
        LOGGER.debug("Created a datagram connector");
        connector = new NioDatagramConnector();

        LOGGER.debug("Setting the handler");
        connector.setHandler(this);

        LOGGER.debug("About to connect to the server...");
        ConnectFuture connFuture = connector.connect(new InetSocketAddress(
                "localhost", 18821));

        LOGGER.debug("About to wait.");
        connFuture.awaitUninterruptibly();

        LOGGER.debug("Adding a future listener.");
        connFuture.addListener(new IoFutureListener<ConnectFuture>() {
            public void operationComplete(ConnectFuture future) {
                if (future.isConnected()) {
                    LOGGER.debug("...connected");
                    session = future.getSession();
                    try {
                        sendData();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    LOGGER.error("Not connected...exiting");
                }
            }
        });
    }

    private void sendData() throws InterruptedException {
        for (int i = 0; i < 30; i++) {
            long free = Runtime.getRuntime().freeMemory();
            String text = String.valueOf(free) ;
            
            IoBuffer buffer = IoBuffer.allocate(text.length()+2);
            buffer.put(text.getBytes());
            buffer.put((byte)10);
            buffer.put((byte)13);
            buffer.flip();
            session.write(buffer);

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                throw new InterruptedException(e.getMessage());
            }
        }
    }

    @Override
    public void exceptionCaught(IoSession session, Throwable cause)
            throws Exception {
        cause.printStackTrace();
    }

    @Override
    public void messageReceived(IoSession session, Object message)
            throws Exception {
        LOGGER.debug("Session recv...");
    }

    @Override
    public void messageSent(IoSession session, Object message) throws
Exception {
        LOGGER.debug("Message sent...");
    }

    @Override
    public void sessionClosed(IoSession session) throws Exception {
        LOGGER.debug("Session closed...");
    }

    @Override
    public void sessionCreated(IoSession session) throws Exception {
        LOGGER.debug("Session created...");
    }

    public void sessionIdle(IoSession session, IdleStatus status)
            throws Exception {
        LOGGER.debug("Session idle...");
    }

    @Override
    public void sessionOpened(IoSession session) throws Exception {
        LOGGER.debug("Session opened...");
    }

    public static void main(String[] args) {
        new UDPTestClient();
    }   
        
}


>>> Second the Server



import java.io.IOException;
import java.net.InetSocketAddress;

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.DatagramSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;

public class UDPTestServer {

        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
                
                NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
                acceptor.setHandler(new TestIOHandler());
                
        acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
        acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
                new TextLineCodecFactory()));
        
        DatagramSessionConfig dcfg = acceptor.getSessionConfig();
        dcfg.setReuseAddress(true);
        
        acceptor.bind(new InetSocketAddress("0.0.0.0",69));
        System.out.println("Service listening on port " + 69);
        
        acceptor.bind(new InetSocketAddress("0.0.0.0",18821));
        System.out.println("Service listening on port 18821");
       
        try {
                        Thread.sleep(50000);
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

}




import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.transport.socket.nio.NioSession;

public class TestIOHandler implements IoHandler {

        @Override
        public void exceptionCaught(IoSession session, Throwable cause)
                        throws Exception {
                
        }

        @Override
        public void messageReceived(IoSession session, Object message)
                        throws Exception {
        String result = (String)message ;
                System.out.println(result + "\n") ;
                
                NioSession test = (NioSession) session ;
                System.out.println(test.getServiceAddress());
                
        }

        @Override
        public void messageSent(IoSession session, Object message) throws 
Exception
{
                
        }

        @Override
        public void sessionClosed(IoSession session) throws Exception {
                
        }

        @Override
        public void sessionCreated(IoSession session) throws Exception {
                
        }

        @Override
        public void sessionIdle(IoSession session, IdleStatus status)
                        throws Exception {
                
        }

        @Override
        public void sessionOpened(IoSession session) throws Exception {
                
        }

}






-- 
View this message in context: 
http://www.nabble.com/Possible-Bug-in-Mina-2.0.0-M6-tp24772119p24787416.html
Sent from the Apache MINA User Forum mailing list archive at Nabble.com.

Reply via email to