- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
xmpp协议的使用【DOC精选】
在android里面用的smack包其实叫做asmack,该包提供了两种不同的连接方式:socket和httpclient。该并且提供了很多操作xmpp协议的API,也方便各种不同自定义协议的扩展。我们不需要自己重新去定义一套接收机制来扩展新的协议,只需继承然后在类里处理自己的协议就可以了。而本文今天主要说两点,一点就是消息是如何接收的,另一点就是消息是如何通知事件的。
总的思路
1.使用socket连接服务器
2.将XmlPullParser的数据源关联到socket的InputStream
3.启动线程不断循环处理消息
4.将接收到的消息解析xml处理封装好成一个Packet包
5.将包广播给所有注册事件监听的类
逐步击破
(声明在看下面的文章时,最好先理解一下smack的使用,这样才能达到深入的理解)
(谨记:上图只显示本文章解释所要用到的类和方法,减缩了一些跟本文主题无关的代码,只留一条贯穿着从建立连接到接收消息的线。)
解析这块东西打算从最初的调用开始作为入口,抽丝剥茧,逐步揭开。
1.
PacketListener packetListener = new PacketListener() {
@Override
public void processPacket(Packet packet) {
System.out
.println(Activity----processPacket+ packet.toXML());
}
};
PacketFilter packetFilter = new PacketFilter() {
@Override
public booleanaccept(Packet packet) {
System.out.println(Activity----accept+ packet.toXML());
return true;
}
};
解释:创建包的监听以及包的过滤,当有消息到时就会广播到所有注册的监听,当然前提是要通过packetFilter的过滤。
2.
connection = new XMPPConnection();
XMPPConnection在这构造函数里面主要配置ip地址和端口(super(new ConnectionConfiguration(09, 9991));)
3.
connection.addPacketListener(packetListener, packetFilter);connection.connect();
注册监听,开始初始化连接。
4.
public void connect() {
// Stablishes the connection, readers and writers
connectUsingConfiguration(config);
}
5.
private void connectUsingConfiguration(ConnectionConfiguration config) {
String host = config.getHost();
intport = config.getPort();
try{
this.socket= newSocket(host, port);
} catch(UnknownHostException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
initConnection();
}
通过之前设置的ip和端口,建立socket对象
6.
protected void initDebugger() {
Class? debuggerClass = null;
try{
debuggerClass = Class.forName(com.simualteSmack.ConsoleDebug
您可能关注的文档
- win如何安装IPX协议【DOC精选】.docx
- win家庭版升级旗舰版过程详解【DOC精选】.doc
- WIN汇编-【DOC精选】.doc
- with+O+OC【DOC精选】.doc
- Win网卡驱动安装方法【DOC精选】.doc
- windows编程技术GDI+编程基础【DOC精选】.doc
- Word Bank of CET 【DOC精选】.doc
- Win网络和共享中心的全面讲解【DOC精选】.doc
- Word 表格中使用公式【DOC精选】.doc
- words about education【DOC精选】.doc
- XtraGrid - Band and Column Customization运行时修改caption内容【DOC精选】.doc
- xc考试B类真题【DOC精选】.doc
- XXXX级会计学专业《计算机会计》试卷【DOC精选】.doc
- XXXX大学毕业设计格式样本【DOC精选】.doc
- XXX大学植物学硕士研究生个人培养计划表【DOC精选】.doc
- xx【DOC精选】.doc
- XXXX项目自动化测试可行性分析报告【DOC精选】.doc
- XX公司信息服务部门的组织结构【DOC精选】.doc
- xxRAWRN-P LED规格书【DOC精选】.doc
- XXX学院硕士研究生分专业招生计划及复试排序表【DOC精选】.doc
文档评论(0)