import com.sun.swing.internal.plaf.metal.resources.metal; import com.sun.swing.internal.plaf.metal.resources.metal_sv; import org.apache.mina.core.RuntimeIoException; import org.apache.mina.core.future.ConnectFuture; 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.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.SocketConnector; import org.apache.mina.transport.socket.nio.NioSocketConnector; import java.net.ConnectException; import java.net.InetSocketAddress; public class MinaClient { public SocketConnector socketConnector; public static final int DEFAULT_CONNECT_TIMEOUT = 5; public static final String HOST = ”192.168.0.100″; public static final int PORT = 1100; public static IoSession ioSession; public MinaClient() { init(); } public void init() { socketConnector = new NioSocketConnector(); // socketConnector.getSessionConfig().setKeepAlive(true); socketConnector.setConnectTimeoutMillis(DEFAULT_CONNECT_TIMEOUT * 1000); socketConnector.getFilterChain().addLast(“codec”, new ProtocolCodecFilter(new TextLineCodecFactory())); ClientIoHandler ioHandler = new ClientIoHandler(); socketConnector.setHandler(ioHandler); InetSocketAddress addr = new InetSocketAddress(HOST, PORT); ConnectFuture cf = socketConnector.connect(addr); cf.awaitUninterruptibly(); ioSession = cf.getSession(); } public void sendMessage(final String msg) { try { if (ioSession != null) { if (ioSession.isConnected()) {// ioSession.write(msg);// System.out.println(“send message ” + msg); } else { reconnect(); } } } catch (RuntimeIoException e) { e.printStackTrace(); } } private void reconnect() { InetSocketAddress addr = new InetSocketAddress(HOST, PORT); ConnectFuture cf = socketConnector.connect(addr); cf.awaitUninterruptibly(); ioSession = cf.getSession(); } public static void main(String[] args) throws InterruptedException { MinaClient clent = new MinaClient(); for (int i = 0; i < 99999; i++) { Thread.sleep(2000); System.err.println(i); clent.sendMessage(“Hello World ” + i); } clent.getSocketConnector().dispose(); } public SocketConnector getSocketConnector() { return socketConnector; } public void setSocketConnector(SocketConnector socketConnector) { this.socketConnector = socketConnector; } } class ClientIoHandler extends IoHandlerAdapter { private void releaseSession(IoSession session) throws Exception { System.out.println(“releaseSession”); if (session.isConnected()) { session.close(true); } } @Override public void sessionOpened(IoSession session) throws Exception { System.out.println(“sessionOpened”); } @Override public void sessionClosed(IoSession session) throws Exception { System.out.println(“sessionClosed-c”); } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { System.out.println(“sessionIdle”); try { releaseSession(session); } catch (RuntimeIoException e) { } } @Override public void messageReceived(IoSession session, Object message) throws Exception { System.out.println(“Receive Server message ” + message); } @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { System.out.println(“exceptionCaught”); cause.printStackTrace(); releaseSession(session); } @Override public void messageSent(IoSession session, Object message) throws Exception { System.out.println(“messageSent”); super.messageSent(session, message); } }
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; 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.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.SocketAcceptor; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import java.net.InetSocketAddress; public class MinaServer { public void init() throws Exception{ SocketAcceptor acceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors() + 1); //设置解析器 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory())); acceptor.setHandler(new BexnHandler()); acceptor.bind(new InetSocketAddress(1100)); acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,5); } public MinaServer() throws Exception { init(); } public static void main(String[] args) throws Exception { new MinaServer(); System.out.println("Server start"); } } class BexnHandler extends IoHandlerAdapter { @Override public void messageReceived(IoSession session, Object message) throws Exception { System.out.println("messageReceived " + message); super.messageReceived(session, message); session.write("messageReceived "+message); } @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception { if (session.isConnected()) { session.close(true); } } @Override public void messageSent(IoSession session, Object message) throws Exception { // session.close(); } @Override public void sessionClosed(IoSession session) throws Exception { super.sessionClosed(session); System.out.println("sessionClosed-s"); } @Override public void sessionCreated(IoSession session) throws Exception { } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { session.close(true); } @Override public void sessionOpened(IoSession session) throws Exception { super.sessionOpened(session); } }
相关推荐
mina连接,mina心跳连接,mina断线重连。其中客户端可直接用在android上。根据各方参考资料,经过自己的理解弄出来的。CSDN的资源分太难得了。
mina客户端,服务器端的demo
mina通信的一个简单demo,方便初学者研究,有问题请指正!
Android端集成Mina框架实现长连接,完美解决断线重连问题,修复断线重连打开多端口问题.zip
Android端集成Mina框架实现长连接,完美解决断线重连问题,修复断线重连打开多端口问题。
实现:手机安卓APP与服务器建立长连接,客户端通过心跳机制保活,并在网络切换比如4G与WiFi的切换以及网络不稳定(服务器坏掉,网卡)造成的长连接断开...采用框架:服务器端和安卓开发均采用Mina框架进行快速开发。
Guice对Apache MINA的支持这是一个简单的库,可让您将Apache MINA项目与Guice 3.0集成在一起。 这样,您可以根据需要在Guice的IoC容器中配置尽可能多的MINA应用程序。 特征支持MINA 2.0.9 支持Guice 3.0 除Apache ...
weui-mina:lipstick:一款致力于微信小程序组件开发的开源库:building_construction:组件: 漂亮的登录授权页: 仿 BootStrap 进度条组件: 仿 weui.js actionsheet 组件页面有些功能无法用组件实现,只能写成页面了...
4.连接断了需要实现下重连机制吧?服务器端写完了还有客户端,也需要帮助指导下实现,问题诸多。如果有现成的轮子偷懒的话,socket.io比较适合:1.轻量级、扩展便捷、API简单易用。2.周边完善,重连、路由、隔离、单...
谷歌驱动器ftp适配器消息最新版本v...特征独立Java应用程序(Java 8) Apache Mina FTP服务器Google Drive API v3 SQLite索引缓存每10秒进行一次索引缓存同步具有权限的用户管理支持所有FTP命令: 列出文件夹和文件重
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和...
可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...