一、什么是XMPP?

介绍XMPP之前,我们先来聊聊GTalk。GTalk是Google推出的IM(Instant Messaging,即时通讯)软件,类似于QQ和MSN。从技术角度来说,GTalk与QQ和MSN的差异是使用了不同的通讯协议,QQ使用了自己的私有协议(未公开),MSN也使用了自己的私有协议。而GTalk使用了XMPP(Extensible Messageing and Presence Protocol,可扩展消息与存在协议),这种通讯协议是一种公开的协议,有很多IM都使用了XMPP。

XMPP是目前主流的四种IM协议之一,其他三种协议分别为:IMPP(Instant Messaging And Presence Protocol)、PRIM(Presence and Instant Messaging Protocol)和SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions)。
在这四种协议中,XMPP是最灵活的。XMPP是一种基于XML的协议,它继承了XML的灵活性和可扩展性。因此,基于XMPP的应用也同样具有超强的灵活性和可扩展性。经过扩展后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一端进行通话,这使得开发者更容易建立客户应用程序或给一个系统添加功能。

二、XMPP协议网络架构

XMPP 的特点是将复杂性从客户端转移到服务器端。这使得客户端编写变得非常容易,更新系统功能也同样变得容易。XMPP中定义了三个角色:XMPP客户端、XMPP服务器、网关。

客户端:通过 TCP 套接字与XMPP 服务器进行通信

服务器:同时承担了客户端信息记录、连接管理和信息的路由功能

网关:承担着与异构即时通信系统的互联互通

三、XMPP协议的地址格式(标志)

每个客户端需要拥有一个地址标识用于定位,XMPP 中称之为 JID (Jabber ID)。地址标识的格式如下

[ node "@" ] domain [ "/" resource ]

例如:

charley@gmail.com/spark

格式与 Email 地址格式类似,但增添了 resource 项(非必需的)。上述例子可以解释为:在 gmail.com 服务器注册的 charley用户,且使用 spark客户端软件登录。资源(resource )只用来识别属于用户的位置或设备等,一个用户可以同时以多种资源与同一个XMPP服务器连接(说白了就是用于支持同一账号的多客户端登录)。

用户地址标识的认证由提供 XMPP 服务的服务器执行。例如,注册于 gmail 服务器的账号由 gmail 服务器进行验证。其他服务器发往 gmail.com 域名的数据包均通过域名查询与服务间验证后发往 gmail 服务器,而不用考虑 gmail 服务器与下属账号间的通信。

四、为什么要采用XMPP的解决方案(主要列出优点,缺点就不列了,实际上我们关系也不大)

1. 开放—XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。

2. 标准—互联网工程工作小组(IETF)已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。而XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何IM供应商在遵循XMPP协议下,都可与Google Talk实现连接。

3. 证实可用—第一个Jabber(现在XMPP)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作著,并有数以百万计的人们使用XMPP实时传讯软件。

4. 分布式—XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。

5. 安全—任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已内置于核心XMPP技术规格中。

6. 可扩展—XML命名空间的威力可使任何人在核心协议的基础上建造客制化的功能;为了维持通透性,常见的扩展由XMPP Standards Foundation。

下面几点更加实际

7. 跨平台—客户端只要基于XMPP协议,不管是什么平台(包括不同的移动终端)都可以互联互通。

8. 弹性佳—XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。

9. 多样性—用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用XMPP技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被“绑架”的困境。

了解了xmpp的基本知识以后就可以开始搭建我们的iPhone平台了

首先我们采用了 XMPP framework框架

具体下载地址:git clone https://code.google.com/p/xmppframework/ xmppframework

下载完毕后,打开xcode创建一个Empty Application 具体怎么给项目添加新页面可以参考我的相关文章

下一步就是具体怎么给xmppframework加入到我们项目中。

不会的童鞋可以google一下网上这个中文版的还是很多的。如果实在不会 我再出教程 嘻嘻^-^

当我们给xmppframework加入到项目中并且bulid成功就说明你添加成功了

接下来不用我说你也知道了 就是我们的登录窗体;

今天先写这么多 留着改天继续写 。。。。。。

iPhone架构xmpp聊天工具 -xmpp协议初识《一》相关推荐

  1. ios开发xmpp仿微信即时聊天工具

    最近在做一个项目,需要一个即时聊天工具,先打算有第三方环信(http://www.easemob.com),但是最终老板不允许,要自己开发用自己的服务器,哎!如果有需要的可以去看看这个环信,真的不错. ...

  2. [NUAA]Python用UDP协议建立带有私聊功能的网络聊天室-建立聊天工具

    文章目录 前言 1.网络聊天室的基本架构是什么? 1.1 客户端和服务器的架构 1.2 通信协议的选择以及多线程通信 1.2.1 多线程通信 1.2.2 通信协议选择 1.3 前后端功能设计思路 1. ...

  3. java三层 开源_java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源...

    [实例简介] java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源 [实例截图] [核心代码] java山寨qq聊天工具(基于mvc三层架构,附mvc架构模式p ...

  4. 利用TCP/UDP 协议制作一个飞秋聊天工具

    视频操作演示: 利用TCP/UDP 协议制作一个飞秋聊天工具演示视频 int udp_broadcast(char const*argv[]) {//1.创建对象udp_socket = socket ...

  5. 常用聊天/传输工具的协议及端口 腾讯QQ/电驴/淘宝旺旺

    检测.记录并封堵的协议列表: 序号 协议名称 协议类别 协议简介 1 腾讯QQ 聊天工具 QQ默认使用UDP通讯方式,默认端口为UDP 8000和8001 2 雅虎通 聊天工具 雅虎通Yahoo!使用 ...

  6. 基于UDP协议的局域网网络聊天工具

    /* * 本程序实现了基于UDP协议的局域网网络聊天工具. * 参考网上的源码,发现一个calss就可以搞定. * ChatFrame类创建窗口,包含JTextField和TextArea. * 前者 ...

  7. xmpp服务器性能测试,使用JMeter测试XMPP聊天服务器

    我正在寻找使用JMeter在XMPP/HTTP Web服务服务器上执行一些性能和负载测试.我是JMeter的新手,现在我已经开始了解基础知识,但是我希望尽快完成这些测试并尽快运行,以便获得一些帮助.使 ...

  8. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!

    原标题:用python写一个聊天小程序!和女朋友的专属聊天工具! 1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可 ...

  9. weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现

    传统业务实现 Websocket 并不难,然而函数计算基本上都是事件驱动,不支持长链接操作.如果将函数计算与 API 网关结合,是否可以有 Websocket 的实现方案呢? API 网关触发器实现 ...

最新文章

  1. day_work_02
  2. [android] listview入门
  3. python循环顶帖_设计Python数据库连接池1-对象的循环引用问题
  4. 在kubernetes 集群内访问k8s API服务
  5. 前端入行两年--教会了我这些道理
  6. 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
  7. 【剑指offer】面试题18:删除链表的节点(Java)
  8. 软件项目管理四个核心价值观
  9. c语言任意两个整数相减_大整数加减运算的C语言实现
  10. C++函数参数传递--值传递和地址传递
  11. MapReduce中的排序和分组
  12. 四大顶级开源网络管理工具详解
  13. Ubuntu 远程使用ssh 开启服务器终端的方法
  14. c3p0连接池配置连接不上mysql_数据库连接池之c3p0的配置 + 问题解决方案
  15. 采购计算机申请,采购申请报告格式
  16. Origin 2017去除水印的方法
  17. FPGA 之 SOPC 系列(七)NIOS II 高级技术
  18. python中科院_中科院闹乌龙,Python“换皮”成木兰
  19. win7和win10哪个好用
  20. CCF中有关计算机网络的顶级会议和推荐期刊(2019年版本)

热门文章

  1. 2022天梯赛 L3-01 千手观音题解
  2. java计算机毕业设计家装建材网源码+数据库+系统+lw文档+mybatis+运行部署
  3. error C3867: “XXX::XXX”: 非标准语法;请使用 ““ 来创建指向成员的指针。
  4. 浅析我国汽车产业下行压力下的汽车金融发展困局和机遇
  5. 用VSCode打造宇宙最强Markdown编辑器【VSCode篇】vscode+MPE插件+PigGo图床+最佳实践+使用技巧
  6. 基于FPGA的PCI接口电路设计
  7. 网站分类目录你常用的标签是什么意思?
  8. 数字孪生炒得火热,但好像对企业发展还没有任何实质性的突破,是否只是表面功夫?
  9. 工业级4G路由器需要满足哪些要求
  10. 英雄联盟S10门票抽取概率粗算