zoukankan      html  css  js  c++  java
  • Apache MINA 基于UDP实例

    1、基于UDP服务端

    server

    NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
    acceptor.setHandler(new MemoryMonitorHandler(this));
    DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
    chain.addLast("logger", new LoggingFilter());
    DatagramSessionConfig dcfg = acceptor.getSessionConfig();
    dcfg.setReuseAddress(true);acceptor.bind(new InetSocketAddress(PORT));
    @Override
    public void sessionCreated(IoSession session) throws Exception {
        SocketAddress remoteAddress = session.getRemoteAddress();
        server.addClient(remoteAddress);
    }
    @Override
    public void messageReceived(IoSession session, Object message) throws Exception {
        if (message instanceof IoBuffer) {
            IoBuffer buffer = (IoBuffer) message;
            SocketAddress remoteAddress = session.getRemoteAddress();
            server.recvUpdate(remoteAddress, buffer.getLong());
        }
     }
    @Override
    public void sessionClosed(IoSession session) throws Exception {
        System.out.println("Session closed...");
        SocketAddress remoteAddress = session.getRemoteAddress();
        server.removeClient(remoteAddress);
    }

    client:

    connector = new NioDatagramConnector();
    connector.setHandler( this );
    ConnectFuture connFuture = connector.connect( new InetSocketAddress("localhost", MemoryMonitor.PORT ));
    connFuture.addListener( new IoFutureListener(){
                public void operationComplete(IoFuture future) {
                    ConnectFuture connFuture = (ConnectFuture)future;
                    if( connFuture.isConnected() ){
                        session = future.getSession();
                        try {
                            sendData();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    } else {
                        log.error("Not connected...exiting");
                    }
                }
            });
    private void sendData() throws InterruptedException {
        for (int i = 0; i < 30; i++) {
            long free = Runtime.getRuntime().freeMemory();
            IoBuffer buffer = IoBuffer.allocate(8);
            buffer.putLong(free);
            buffer.flip();
            session.write(buffer);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                throw new InterruptedException(e.getMessage());
            }
        }
    }
  • 相关阅读:
    水滴二次开发日志5
    水滴二次开发日志4
    水滴二次开发日志3
    水滴二次开发日志2
    NOIp2020AFO记
    Diary(2020十一月 NOIP赛前集训)
    我们的Gary真的是太强辣
    Diary(2020十月 CSP赛前集训)
    Diary(2020九月 半集训)
    Music
  • 原文地址:https://www.cnblogs.com/quyongjin/p/3128277.html
Copyright © 2011-2022 走看看