stock mina框架,自动重连
来源:互联网 发布:共赢网络怎么样 编辑:程序博客网 时间:2024/04/30 07:16
最近在研究stock 通讯看到mina框架使用起来实在是太简单了,想和大家一起分享一下,多多学习!
贴上主要代码大家可以看一下:
package com.org.mina;
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import android.annotation.SuppressLint;
import android.os.Handler;
public class StockServer {
private static NioSocketConnector connector = new NioSocketConnector();
private DefaultIoFilterChainBuilder chain = connector.getFilterChain();
private static IoSession session;
private static ClientHandler clientHandler;
private static ConnectFuture connectFuture;
private static final String HOST = "192.168.2.203";
private static final int PORT = 4000;
private static final int TIME_OUT = 30;
public StockServer() {
java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
clientHandler = new ClientHandler(handler);
Thread thread = new Thread(new StockThread());
thread.start();
Thread reconnectThread = new Thread(new RunnableThread());
reconnectThread.start();
}
class StockThread implements Runnable {
@Override
public void run() {
chain.addLast("myChin", new ProtocolCodecFilter(
new ObjectSerializationCodecFactory()));
connector.setHandler(clientHandler);
connector.setConnectTimeoutMillis(TIME_OUT);
InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
connectFuture = connector.connect(addr);
connectFuture.awaitUninterruptibly();
if (connectFuture.isConnected()) {
session = connectFuture.getSession();
System.out.println("连接成功!!!");
}
}
}
public static void sendMessage(String msg, UIListener uiListener) {
if (session != null && session.isConnected()) {
clientHandler.setUIListener(uiListener);
session.write(msg);
} else {
uiListener.refreshUI("服务器连接失败,正在尝试重连");
}
}
class RunnableThread implements Runnable {
@Override
public void run() {
while (true) {
if (session == null || !session.isConnected()) {
try {
Thread.sleep(1000);
InetSocketAddress addr = new InetSocketAddress(HOST,
PORT);
ConnectFuture cf = connector.connect(addr);
cf.awaitUninterruptibly();
if (cf.isConnected()) {
session = cf.getSession();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
@SuppressLint("HandlerLeak")
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
UIListener uiListener = (UIListener) msg.obj;
String message = msg.getData().getString("message");
uiListener.refreshUI(message);
break;
default:
break;
}
};
};
}
有问题的可以给我留言,相互交流
- stock mina框架,自动重连
- Mina 断线重连
- Mina 断线重连
- Mina 断线重连
- Mina 断线重连
- MINA断线重连
- Mina 断线重连
- Mina 断线重连
- Android MINA框架之实战总结(一) Mina连接,断开,重连
- Mina框架使用---Android客户端的实现,断线重连,粘包处理(服务端非mina)
- Mina 断线重连机制
- Mina断线重连问题
- Mina 断线重连 - 解决方案
- Android-----借助MINA框架实现长连接、短连接以及断线重连
- 自动重连
- asmack自动重连
- mysql 自动重连
- 数据库自动重连
- open 函数
- java的System.getProperty()方法可以获取的值
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- HDOJ 题目3127 WHUgirls(完全背包)
- meta标签中的http-equiv属性使用介绍
- stock mina框架,自动重连
- “高,富,快的互联网”
- android基本 UI(四)—时间选择器TimePicker和日期选择器 DatePicker
- 深圳健丽国际医学美容集团的兼职编辑招聘是骗人的!
- mp4格式学习(一)
- 安卓客户端,服务端
- VPN网站
- 动态规划题目(二)——跳台阶
- 【ASP.net】Entity Framework Migrations NuGet Error处理