|
Apache MINA 2 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。Apache MINA 2 可以作为开发网络应用程序的一个良好基础。
本文介绍了如何使用Apache Mina开发UDP服务端程序。
public class UdpServer {
private static final long serialVersionUID = 1L;
public static final int PORT = 8;
public UdpServer() throws IOException {
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
acceptor.setHandler(new UdpServerHandler(this));
Executor threadPool = Executors.newCachedThreadPool();
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast("logger", new LoggingFilter());
chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
chain.addLast("threadPool", new ExecutorFilter(threadPool));
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReadBufferSize(4096);// 设置接收最大字节默认2048
dcfg.setMaxReadBufferSize(65536);
dcfg.setReceiveBufferSize(1024);// 设置输入缓冲区的大小
dcfg.setSendBufferSize(1024);// 设置输出缓冲区的大小
dcfg.setReuseAddress(true);// 设置每一个非主监听连接的端口可以重用
acceptor.bind(new InetSocketAddress(PORT));
System.out.println("UDPServer listening on port " + PORT);
}
public static void main(String[] args) throws IOException {
new UdpServer();
}
}
public class UdpServerHandler extends IoHandlerAdapter {
private UdpServer server;
public UdpServerHandler(UdpServer server) {
this.server = server;
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
cause.printStackTrace();
session.close(true);
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
String expression = message.toString();
System.out.println("[" + expression + "]");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("Session closed...");
}
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println("Session created...");
SocketAddress remoteAddress = session.getRemoteAddress();
System.out.println(remoteAddress);
}
@Override
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
System.out.println("Session idle...");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("Session Opened...");
SocketAddress remoteAddress = session.getRemoteAddress();
System.out.println(remoteAddress);
}
} |
|
所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298
本贴地址:https://www.yunweiku.com/thread-326228-1-1.html
上篇帖子:
(apache)mod_proxy 和 mod_rewrite实现js跨域
下篇帖子:
常见开源协议(BSD,Apache,GPL,LGPL,MIT)
|
|
|
|
|