Skip to content

Instantly share code, notes, and snippets.

@icedraco
Created February 24, 2016 14:29
Show Gist options
  • Select an option

  • Save icedraco/9a547d5eb71b996a86a2 to your computer and use it in GitHub Desktop.

Select an option

Save icedraco/9a547d5eb71b996a86a2 to your computer and use it in GitHub Desktop.
Example code for Apache MINA sockets
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