既然是
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的服务端,接收到帧数据后,怎么向客户端反馈新的数据包等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)