引用此评论
2.jpg (49.75 KB, 下载次数: 1927)
下载附件 保存到相册
5 年前 上传
private void udpListeningImpl() throws Exception { while (true) { // 缓冲区 byte[] data = new byte[1024]; // 接收数据报的包 DatagramPacket packet = new DatagramPacket(data, data.length); // 获取socket引用,以便接下来进行数据监听 DatagramSocket localUDPSocket = LocalUDPSocketProvider.getInstance().getLocalUDPSocket(); if (localUDPSocket != null && !localUDPSocket.isClosed()) { // ! 设置读超时时间,确保在MobileIMSDK的心跳超时到来时,下方的receive线束block状态,从而 // 让它所属的thread线程结束生命周期,防止网络长时间不好的情况下,能正常回收thread所占内存 // 防止因此而导致的OOM(注意:本超时建议不要短于MB框架的心跳超时时长,也不应太长否则不能即 // 时结束thread,超时时间只要长于心跳超时时间,就不会干扰正常的MobileIMSDK通信和心跳算法)。 - 20190326 localUDPSocket.setSoTimeout(KeepAliveDaemon.NETWORK_CONNECTION_TIME_OUT + KeepAliveDaemon.KEEP_ALIVE_INTERVAL); // ! 做好异常捕获,让代码更健壮! - 20190326 try{ //接收数据 localUDPSocket.receive(packet); // 通知处理者 Message m = Message.obtain(); m.obj = packet; messageHandler.sendMessage(m); } catch(Exception e){ Log.d(TAG, "【IMCORE】【udpListeningImpl】localUDPSocket.receive()超时已到来" + ",本socket句柄将被正常回收,socket监听线程也将正常结束生命周期。。。("+(thread == null ?"":thread.getId())+")"); try{ if(localUDPSocket != null) { localUDPSocket.close(); localUDPSocket = null; } }catch(Exception ee){ Log.d(TAG, "【IMCORE】【udpListeningImpl】IN localUDPSocket.close(), cause="+ee.getMessage()); } } } } }
引用:秋草里黄 发表于 2019-03-26 14:55 是的 运行在一个23寸的平板上的,相当于指挥平台的一个中心点,监控终端的
引用:秋草里黄 发表于 2019-03-27 13:11 有个新问题了 客户端总是掉线,重连成功又掉线,不稳定
引用:秋草里黄 发表于 2019-03-27 13:47 不能这样改哦、改了之后oom不会出现了 但是总是掉线,客户端之间收不到消息。还原jar包后,就正常了, ...
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.109377 second(s), 29 queries , Gzip On.