最近用asmack做一个android的手机客户端(openfire做服务器),一开始connect服务器都失败,这个再PC端运行得好好的,一到手机端就卡住了,开局不顺。
后来问了队友才知道要在c盘sysytem32文件夹的driver文件夹的host文件修改域名映射,终于connect上服务器了。不过,悲剧才刚刚开始,后来出现chat.addMessageListener(...)接收不到消息,阻塞不通,消息都监听不了那还怎么玩。上网查了很久,终于发现“还有”一个消息的方法。
消息监听代码实现:
// 监听消息接收 XmppConn.connection.addPacketListener(new PacketListener() { public void processPacket(Packet packet) { Message message = (Message) packet; System.out.println("收到消息" + message.toXML()); },null);
要问为什么addMessagelistener不管用,说实话,我也不知道,网上说这是asmack的一个bug。
好了有了这个方法,实现一对一聊天的基本功能就足够了。
OK,这个手机端不能这么锉吧,然后就添加多人聊天功能,也就是会议吧,这个网上资料多的是,基本都是下面的代码的样子:
MultiUserChat.addInvitationListener(connection, new InvitationListener() { public void invitationReceived(Connection conn, String room, String inviter, String reason, String password, Message message) { MultiUserChat multiUserChat = new MultiUserChat(conn, room); System.out.println("收到来自 " + inviter + " 的聊天室邀请。邀请附带内容:" + reason); } }
原来我就是这么实现的,而且在PC端运行时畅通无阻啊,但是到了android这边,这个想法就太天真了,我发现程序直接把这段代码忽视了!!!思前想后无果,只能用addPacketListener的方式来搞了,直接导致的结果便是苦力~~自己写方法写函数来把接收到的信息解析出来,这里面的工作量不是一般的大。
至今我还留着这个疑问:为什么许多监听都无效?而且真的是网上说的asmack的bug?为什么android不允许预读取asmack里面的一个叫META-INF里面的文件?
发到博客频道上,更希望有谁能帮一下忙解释甚至解决这些问题,感激不尽。
相关推荐
android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信
android蓝牙通信(分为客户端,服务端) 因为最近需要做物联网这一块,就简单的搞了个demo实现客户端向服务端发送指令
android应用源码(精)基于asmack开发的Android IM客户端源码,android安卓实例应用源代码,仅供学习及设计参考。
Android手机之间的蓝牙通信客户端和服务端代码的代码实现
Android socket通信聊天,客户端+服务端
Android案例之新闻客户端服务器实现,完全属于自己的新闻展示平台
xmpp+android+openfire+asmack即时通讯客户端聊天 上网下载个openfire服务器安装后即可使用
基于Android平台的新闻客户端的设计与实现毕业论文
Android手机之间的蓝牙通信客户端和服务端代码的代码实现 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
android_asmack_注册_登陆_聊天_多人聊天室_文件传输
基于Android平台的新闻客户端项目所用数据库为MySQL,服务器为Apache,主要开发工具为eclipse,在Android平台实现,程序运行环境为windows 8,内存4G,源码详见附录。
android开发新浪微博客户端+完整攻略+源码 android开发新浪微博客户端+完整攻略+源码 android开发新浪微博客户端+完整攻略+源码 android开发新浪微博客户端+完整攻略+源码
Android tcp/ip客户端程序,实现Android客户端与Ubuntu ros 服务器通信,连接成功之后客户端发送数据,服务器收到数据之后返回。 参考:https://blog.csdn.net/weixin_42100710/article/details/126390181
基于最新的FreeRDP开源,已整合最简,.so资源已封装,基于RDP协议的android手机可连接电脑远程桌面的客户端,整套源码经测试可用。项目import置入eclipse无报错! 1)支持Android 2.2(含)以上系统 2)支持RDP协议 ...
基于xmpp+asmack+openfire的安卓客户端,界面仿QQ,实现好友添加,消息收发(支持文本,动态表情,图片,及位置类型) 原来的版本Android studio3无法编译通过。修改了一些配置和图片资源 原作者博客地址: ...
Android手机客户端与服务器之间通信socket
android 的wifi通信示例 android 的wifi通信示例
Android手机蓝牙通信设计RFCOMM协议客户端+语音传送与接收.pdfAndroid手机蓝牙通信设计RFCOMM协议客户端+语音传送与接收.pdfAndroid手机蓝牙通信设计RFCOMM协议客户端+语音传送与接收.pdfAndroid手机蓝牙通信设计...
python+毕业设计《基于Android的新闻推荐客户端设计与实现》+源码+课程作业 python+毕业设计《基于Android的新闻推荐客户端设计与实现》+源码+课程作业 python+毕业设计《基于Android的新闻推荐客户端设计与实现》+...
PC客户端与Android服务端的Socket同步通信.docx