package com.webank.bsp_query_agent; import java.net.*; import java.nio.charset.Charset; import org.apache.mina.core.buffer.*; import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; import org.apache.mina.core.future.*; import org.apache.mina.core.service.*; import org.apache.mina.core.session.*; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.*; import org.slf4j.*; public class UdpClientMina extends IoHandlerAdapter { public static final int CONNECT_TIMEOUT = 30; private IoConnector connector; private static IoSession session; public Logger logger = LoggerUtils.getAppLogger(); public UdpClientMina() { connector = new NioDatagramConnector(); connector.setConnectTimeoutMillis(CONNECT_TIMEOUT); connector.setHandler(this); DefaultIoFilterChainBuilder chain = connector.getFilterChain(); if (Props.is_textline_codec) chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8")))); ConnectFuture connFuture = connector.connect( new InetSocketAddress("localhost", UdpServerMina.PORT)); connFuture.awaitUninterruptibly(); session = connFuture.getSession(); } public void exceptionCaught(IoSession session, Throwable cause) throws Exception { logger.error(cause.getMessage()); } public void messageReceived(IoSession session, Object message) throws Exception { if (message instanceof IoBuffer) { IoBuffer buffer = (IoBuffer)message; String str = new String(buffer.array(), buffer.position(), buffer.limit()); logger.info("buffer is \"{}\"", str); } else { logger.info("string is \"{}\"", message); } } public void messageSent(IoSession session, Object message) throws Exception { } public void sessionClosed(IoSession session) throws Exception { } public void sessionCreated(IoSession session) throws Exception { } public void sessionIdle(IoSession session, IdleStatus status) throws Exception { } public void sessionOpened(IoSession session) throws Exception { } public static void main(String[] args) throws Exception { UdpClientMina client = new UdpClientMina(); if (Props.is_textline_codec) { session.write("hello"); } else { String str = Integer.toString(3); byte[] data = str.getBytes(); IoBuffer buffer = IoBuffer.allocate(data.length); buffer.put(data); buffer.flip(); session.write(buffer); } Thread.sleep(1000); client.connector.dispose(true); } }