LoginSignup
1
0

More than 5 years have passed since last update.

JAVA Apache Mina Demo

Posted at

サーバーを作る 

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
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.nio.NioSocketAcceptor;

public class MinaTimeServer {
// port -》》
private static final int PORT = 6488;

public static void main(String[] args) throws IOException {
    // acceptor
    IoAcceptor acceptor = new NioSocketAcceptor();
    acceptor.getSessionConfig().setReadBufferSize(2048);
    acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
    // logger
    acceptor.getFilterChain().addLast("logger", new LoggingFilter());
    // Code
    acceptor.getFilterChain().addLast(
        "codec",
        new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
    // server
    acceptor.setHandler(new TimeServerHandler());
    // port
    acceptor.bind(new InetSocketAddress(PORT));
    // run
    acceptor.bind();
}
---------------------------------------------------------------- :kissing: 
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

/**
 * サーバー server
 */
public class TimeServerHandler extends IoHandlerAdapter {

    /**
     * connection 
     */
    @Override
    public void sessionCreated(IoSession session){
        // enable ip address and port
        System.out.println(session.getRemoteAddress().toString());
    }

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

    /**
     * message 
     */
    @Override
    public void messageReceived(IoSession session, Object message) throws Exception {
        String strMsg = message.toString();
        if (strMsg.trim().equalsIgnoreCase("quit")) {
            session.close(true);
            return;
        }
        // return message by string
        session.write("Hi Client!");
        // print message
        System.out.println("Message written : " + strMsg);
    }

    @Override
    public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
        System.out.println("IDLE" + session.getIdleCount(status));
    }

}
-------------------------------------------------- :sleeping: 
Client

import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
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.nio.NioSocketConnector;

public class MinaTimeClient {

    public static void main(String[] args){
        // create user connection contianer
        NioSocketConnector connector = new NioSocketConnector();
        connector.getFilterChain().addLast("logger", new LoggingFilter());
        connector.getFilterChain().addLast("codec", 
                new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));

        // set outTime
        connector.setConnectTimeoutCheckInterval(30);
        connector.setHandler(new TimeClientHandler());

        // create link
        ConnectFuture cf = connector.connect(new InetSocketAddress("192.168.2.109", 6488));
        // wait for link will be connection
        cf.awaitUninterruptibly();

        cf.getSession().write("Hi Server!");
        cf.getSession().write("quit");

        // wait link offline
        cf.getSession().getCloseFuture().awaitUninterruptibly();
        // discharge
        connector.dispose();
    }
}
----------------------------------------------- :unamused: 

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class TimeClientHandler extends IoHandlerAdapter {

    public void messageReceived(IoSession session, Object message) throws Exception {
        String content = message.toString();
        System.out.println("client receive a message is : " + content);
    }

    public void messageSent(IoSession session, Object message) throws Exception {
        System.out.println("messageSent -> :" + message);
    }

}
これは 簡単なDEMOでした〜
![pixelavatar48.png](https://qiita-image-store.s3.amazonaws.com/0/85191/ec3db6eb-53f1-599b-19ac-25cfc7f15b73.png)




1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0