Mina框架生成的IoSession,存到MongoDB中是String类型,当查询后想连接这个session,怎么办

Mina框架生成的IoSession,存到MongoDB中是String类型,当查询后想连接这个session,怎么办,第1张

既然是

IoSession这就是个对象,有很多属性。

怎么可能被你转成一个字符串被储存?

我是将所有IoSession存储到数组或hashmap里

根据客户端的IP或者通讯规约里的设备ID区分IoSession

想用的时候 根据对方IP或者设备ID查找对应的IoSession

在做一个项目, 有一台android需要实时接受其它客户端的udp数据包(包括在锁屏的状态下), 我使用了mina框架, 在未锁屏的时候, 是能够正常的接受到数据包的, 但是一旦锁屏了就再也无法接受到数据包了, 直到唤醒屏幕。

以下是我service中的代码:

public class ListenerService extends Service {

private PowerManagerWakeLock mWakeLock;

private MINAServer server;

public static long lastMsgReceived = SystemcurrentTimeMillis();

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

superonCreate();

Logi("log_info", "ListenerService onCreate");

try {

server = new MINAServer();

} catch (IOException e) {

eprintStackTrace();

}

acquireWakeLock();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

Logi("log_info", "ListenerService onStartCommand");

// 启动一个定时器, 每隔32秒检测一次: lastMsgReceived 减去 当前时间。

Timer timer = new Timer();

timerschedule(new RecordConnTimes(), 0, 32 1000);

return superonStartCommand(intent, flags, startId);

}

private void acquireWakeLock()

{

if (null == mWakeLock)

{

PowerManager pm = (PowerManager)thisgetSystemService(ContextPOWER_SERVICE);

mWakeLock = pmnewWakeLock(PowerManagerPARTIAL_WAKE_LOCK| PowerManagerON_AFTER_RELEASE,"");

if (null != mWakeLock)

{

mWakeLockacquire();

}

}

}

@Override

public void onDestroy() {

if (null != mWakeLock)

{

mWakeLockrelease();

mWakeLock = null;

}

superonDestroy();

}

private class RecordConnTimes extends TimerTask {

@Override

public void run() {

Logi("log_info", "RecordConnTimes run");

long currentTime = SystemcurrentTimeMillis();

// 如果连续3次都没有接收到其它android端的广播, 则输出没有广播。

if (96 1000 <= currentTime - lastMsgReceived) {

Logi("log_info", "大于等于3次没有接收到广播");

} else {

Message msg = new Message();

Bundle bundle = new Bundle();

Logi("log_info", "小于3次没有接收到广播!!!");

}

}

}

}

下面是mina handler的messageReceived方法:

public void messageReceived(IoSession session, Object message)

throws Exception {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");

Date curDate = new Date(SystemcurrentTimeMillis()); //获取当前时间

if (message instanceof IoBuffer) {

IoBuffer buffer = (IoBuffer) message;

byte[] bb = bufferarray();

for (int i = 0; i < bblength; i++) {

Systemoutprint((char) bb[i]);

}

Systemoutprintln("");

Systemoutprintln("");

IoBuffer buffer1 = IoBufferwrap("11"getBytes("UTF-8")); //返回信息给Clinet端

sessionwrite(buffer1);

Logi("log_info", "messageReceived, " + formatterformat(curDate));

}

// 一旦接受到广播就更新lastMsgReceived为当前时间

ListenerServicelastMsgReceived = SystemcurrentTimeMillis();

}

请问我该怎么做才能让mina在锁屏的状态下也能接收到数据包呢? 还是说mina在android上达不到这样的要求呢。。?

include <QtCore/QCoreApplication>

#include <QAxObject>

#include <Windowsh>

int main(int argc, char argv[])

{

//OleInitialize(0);

//CoInitialize(0);

QCoreApplication a(argc, argv);

QAxObject asdfg = new QAxObject("ExcelApplication");

return aexec();

}

以上就是关于Mina框架生成的IoSession,存到MongoDB中是String类型,当查询后想连接这个session,怎么办全部的内容,包括:Mina框架生成的IoSession,存到MongoDB中是String类型,当查询后想连接这个session,怎么办、mina无法接udp数据包、Apache的mina的服务端,接收到帧数据后,怎么向客户端反馈新的数据包等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10142437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存