Created
February 24, 2016 14:29
-
-
Save icedraco/9a547d5eb71b996a86a2 to your computer and use it in GitHub Desktop.
Example code for Apache MINA sockets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import org.apache.mina.core.buffer.IoBuffer; | |
| 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.NioSocketConnector; | |
| import org.slf4j.Logger; | |
| import org.slf4j.LoggerFactory; | |
| import java.io.UnsupportedEncodingException; | |
| import java.net.InetSocketAddress; | |
| // External Libraries: | |
| // + org.apache.mina.core:2.0.7 | |
| // + org.slf4j:slf4j-api:1.7.16 | |
| // + org.slf4j:slf4j-simple:1.7.16 | |
| public class MinaMutiConnTestDriver { | |
| private final static Logger LOGGER = LoggerFactory.getLogger(MinaTestDriver.class); | |
| public static void main(String[] args) throws InterruptedException { | |
| fetch("www.icerealm.org"); | |
| fetch("www.google.com"); | |
| fetch("www.furcadia.com"); | |
| } | |
| public static void fetch(String addr) { | |
| NioSocketConnector connector = new NioSocketConnector(); | |
| connector.setHandler(new UrlFetchHandler(addr)); | |
| connector.connect(new InetSocketAddress(addr, 80)); | |
| } | |
| public static class UrlFetchHandler extends IoHandlerAdapter { | |
| private final String mUrl; | |
| public UrlFetchHandler(String url) { | |
| mUrl = url; | |
| } | |
| @Override | |
| public void sessionCreated(IoSession session) { | |
| LOGGER.info("sessionCreated()"); | |
| } | |
| @Override | |
| public void sessionOpened(IoSession session) { | |
| LOGGER.info("sessionOpened()"); | |
| LOGGER.info("Sending GET request..."); | |
| IoBuffer buffer = IoBuffer.allocate(1024).wrap(String.format("GET / HTTP/1.0\nHost: %s\n\n", mUrl).getBytes()); | |
| session.write(buffer); | |
| } | |
| @Override | |
| public void sessionClosed(IoSession session) { | |
| LOGGER.info("sessionClosed()"); | |
| } | |
| @Override | |
| public void sessionIdle(IoSession session, IdleStatus status) { | |
| LOGGER.info("sessionIdle(status=" + status.toString() + ")"); | |
| } | |
| @Override | |
| public void messageReceived(IoSession session, Object message) throws UnsupportedEncodingException { | |
| LOGGER.info("messageReceived()"); | |
| IoBuffer buffer = (IoBuffer)message; | |
| LOGGER.info(new String(buffer.array(), buffer.position(), buffer.remaining(), "ASCII")); | |
| } | |
| @Override | |
| public void messageSent(IoSession session, Object message) throws UnsupportedEncodingException { | |
| LOGGER.info("messageSent()"); | |
| IoBuffer buffer = (IoBuffer)message; | |
| LOGGER.info(new String(buffer.array(), buffer.position(), buffer.remaining(), "ASCII")); | |
| } | |
| @Override | |
| public void exceptionCaught(IoSession session, Throwable cause) { | |
| LOGGER.info("exceptionCaught(" + cause.getMessage() + ")"); | |
| session.close(true); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment