diff --git a/examples/src/main/java/org/apache/mina/examples/service/ClientHandler.java b/examples/src/main/java/org/apache/mina/examples/service/ClientHandler.java new file mode 100644 index 000000000..f7cebaab1 --- /dev/null +++ b/examples/src/main/java/org/apache/mina/examples/service/ClientHandler.java @@ -0,0 +1,80 @@ +package org.apache.mina.examples.service; + +import java.util.Date; + +import org.apache.mina.api.IdleStatus; +import org.apache.mina.api.IoHandler; +import org.apache.mina.api.IoService; +import org.apache.mina.api.IoSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ClientHandler implements IoHandler { + + static final private Logger LOG = LoggerFactory.getLogger(ClientHandler.class); + + @Override + public void sessionOpened(IoSession session) { + LOG.info("session opened {" + session + "}"); + } + + @Override + public void sessionClosed(IoSession session) { + LOG.info("client :" + session.getRemoteAddress().toString() + " close connection"); + } + + @Override + public void sessionIdle(IoSession session, IdleStatus status) { + // TODO Auto-generated method stub + + } + + @Override + public void messageReceived(IoSession session, Object message) { + LOG.info("client get message => " + message.toString()); + System.out.println("client get message => " + message.toString()); + } + + @Override + public void messageSent(IoSession session, Object message) { + LOG.info("client send message: " + message.toString()); + System.out.println("client send message: " + message.toString()); + } + + @Override + public void serviceActivated(IoService service) { + // TODO Auto-generated method stub + + } + + @Override + public void serviceInactivated(IoService service) { + // TODO Auto-generated method stub + + } + + @Override + public void exceptionCaught(IoSession session, Exception cause) { + // TODO Auto-generated method stub + + } + + @Override + public void handshakeStarted(IoSession abstractIoSession) { + // TODO Auto-generated method stub + + } + + @Override + public void handshakeCompleted(IoSession session) { + // TODO Auto-generated method stub + + } + + @Override + public void secureClosed(IoSession session) { + // TODO Auto-generated method stub + + } + +} diff --git a/examples/src/main/java/org/apache/mina/examples/service/MyClient.java b/examples/src/main/java/org/apache/mina/examples/service/MyClient.java new file mode 100644 index 000000000..6c1efbdba --- /dev/null +++ b/examples/src/main/java/org/apache/mina/examples/service/MyClient.java @@ -0,0 +1,48 @@ +package org.apache.mina.examples.service; + +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.concurrent.ExecutionException; + +import org.apache.mina.api.IoFuture; +import org.apache.mina.api.IoSession; +import org.apache.mina.codec.delimited.serialization.JavaNativeMessageEncoder; +import org.apache.mina.transport.nio.NioTcpClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MyClient { + + static final private Logger LOG = LoggerFactory.getLogger(MyClient.class); + + public static void main(String[] args) { + + LOG.info("starting echo client"); + final NioTcpClient client = new NioTcpClient(); + client.setIoHandler(new ClientHandler()); + + try { + + IoFuture future = client.connect(new InetSocketAddress("localhost", 9999)); + + try { + IoSession session = future.get(); + LOG.info("session connected : {" + session + "}"); + + HashMap m = new HashMap(); + m.put("1", "1"); + + // encode + JavaNativeMessageEncoder in = new JavaNativeMessageEncoder(); + ByteBuffer encode = in.encode(m); + session.write(encode); + + } catch (ExecutionException e) { + LOG.error("cannot connect : ", e); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/examples/src/main/java/org/apache/mina/examples/service/MyServer.java b/examples/src/main/java/org/apache/mina/examples/service/MyServer.java new file mode 100644 index 000000000..f360fc34e --- /dev/null +++ b/examples/src/main/java/org/apache/mina/examples/service/MyServer.java @@ -0,0 +1,37 @@ +package org.apache.mina.examples.service; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetSocketAddress; +import java.net.SocketAddress; + +import org.apache.mina.api.IdleStatus; +import org.apache.mina.filter.logging.LoggingFilter; +import org.apache.mina.transport.nio.NioTcpServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class MyServer { + + private static final Logger LOG = LoggerFactory.getLogger(MyServer.class); + + public static void main(String[] args) { + LOG.info("start server..."); + final NioTcpServer acceptor = new NioTcpServer(); + acceptor.setFilters(new LoggingFilter("LoggingFilter1")); + acceptor.setIoHandler(new ServerHandler()); + + try { + + final SocketAddress address = new InetSocketAddress(9999); + acceptor.bind(address); + new BufferedReader(new InputStreamReader(System.in)).readLine(); + acceptor.unbind(); + } catch (final IOException e) { + LOG.error("Interrupted exception", e); + } + } + +} diff --git a/examples/src/main/java/org/apache/mina/examples/service/ServerHandler.java b/examples/src/main/java/org/apache/mina/examples/service/ServerHandler.java new file mode 100644 index 000000000..33f8df7f5 --- /dev/null +++ b/examples/src/main/java/org/apache/mina/examples/service/ServerHandler.java @@ -0,0 +1,86 @@ +package org.apache.mina.examples.service; + +import java.nio.ByteBuffer; +import java.util.HashMap; + +import org.apache.mina.api.IdleStatus; +import org.apache.mina.api.IoHandler; +import org.apache.mina.api.IoService; +import org.apache.mina.api.IoSession; +import org.apache.mina.codec.IoBuffer; +import org.apache.mina.codec.delimited.serialization.JavaNativeMessageDecoder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ServerHandler implements IoHandler { + + private static final Logger LOG = LoggerFactory.getLogger(ServerHandler.class); + + @Override + public void sessionOpened(IoSession session) { + LOG.info("server session opened {" + session + "}"); + } + + @Override + public void sessionClosed(IoSession session) { + LOG.info("IP:" + session.getRemoteAddress().toString() + " close"); + } + + @Override + public void sessionIdle(IoSession session, IdleStatus status) { + + } + + @Override + public void messageReceived(IoSession session, Object message) { + if (message instanceof ByteBuffer) { + try { + + JavaNativeMessageDecoder decoder = new JavaNativeMessageDecoder(); + IoBuffer ioBuff = IoBuffer.wrap((ByteBuffer) message); + HashMap map = decoder.decode(ioBuff); + LOG.info("server decode value => " + map); + System.out.println("server decode => " + map); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @Override + public void messageSent(IoSession session, Object message) { + LOG.info("send message:" + message.toString()); + System.out.println("server send message:" + message.toString()); + } + + @Override + public void serviceActivated(IoService service) { + + } + + @Override + public void serviceInactivated(IoService service) { + + } + + @Override + public void exceptionCaught(IoSession session, Exception cause) { + + } + + @Override + public void handshakeStarted(IoSession abstractIoSession) { + + } + + @Override + public void handshakeCompleted(IoSession session) { + + } + + @Override + public void secureClosed(IoSession session) { + + } + +}