在讲解XMPP前,我们需要先了解什么是即时通讯技术:

* 即时通讯技术(IM - InstantMessaging)支持用户在线实时交谈。当一方需要发送消息时,用户必须打开一个窗口,以便让用户与交流对象在窗口中输入并显示交谈内容。
* 目前有许多IM系统,如QQ、MSN、YahooIM等等,它们主要区别在于各自通讯协议的实现。所以即时通讯的技术核心在于它的传输协议。
* 协议用来说明信息在网络上如何传输,开发者经过许多努力试图统一各大主要IM供应商的标准(Yahoo、Microsoft),但是目前还没有成功案例。一旦统一传输协议,那么理论上可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过的IM协议包括:IETF的对话初始协议(SIP)和及时通讯对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和及时通讯协议(PRIM)还有基于XML且开放的可扩展通讯及表示协议(XMPP)协议(前身称为Jabber
协议)。
XMPP的历史:
* XMPP是基于XML的协议,前身是Jabber,是一个开源组织定义的网络即时通讯协议。 用于即时消息(IM)以及在线探测。最初XMPP是作为一个框架开发,目标是支持企业内部的及时消息传递和联机状态应用程序。
*XMPP是一个分散型通信网络,所以,只要网络基础设施允许,任何XMPP用户都可以向其他任何XMPP用户传递消息。多个XMPP服务器之间也可以通过专门的服务器 —— 服务器 协议进行通信,提供了创建分散型社交网络和写作框架的可能性。
* 尽管XMPP的出现是为了满足 个人 —— 个人即时消息传递,但它的潜力不仅限于此。 
概述:
*XMPP是一种基于XML的协议,它继承了XML环境中灵活地发展性。也说明了XMPP是可扩展的。可以通过发送扩展的信息来处理用户需求,一级XMPP的顶端建立了如内容发布系统和基于地址的服务等应用程序。而并且,XMPP包含了针对服务器端的软件协议,所以能与另一端进行通信,使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能。
*XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML一月解析和阅读的特征,使得XMPP的协议能够非常漂亮。
*XMPP的即时通讯扩展应用部分是根据IETF在之前对即时通讯的一个抽象定义,与其他行业已得到广泛使用的即时通讯协议,诸如AIM,QQ等功能完整,完善等先进性。
* XMPP的扩展协议Jingle使其支持语音和视频(目前IOS尚不支持)
* XMPP的官方文档是RFC 3920
* XMPP协议曾经是Google力推的及时通信协议,代表作Gtalk
XMPP的基本结构
*XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当2哥客户端进行通讯时,他们的消息就是通过服务器传递。采用这种架构,主要是为了简化客户端,将大多数工作放到服务器端进行。
* XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者任意两个之间双向发生
* 服务器同事承担了客户端信息记录,连接管理和信息的路由功能
*网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信), MSN,ICQ等。
* 基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML流
以上资料均来自网络,并加以整理,在此感谢分享者!
XMPP的优缺点:
* 优点
1> 开放(免费)
2> 标准(XMPP的技术规格已被定义在RFC 3920及RFC 3921)
3> 分散
4> 安全(TCP/IP)
5> 可扩展
* 缺点
1> 数据负载过重XML
2> 没有二进制传输(都以XML的字符串传输)
要使用XMPP,我们就必须配置XMPP环境,接下来开始进入正题:

安装Mysql
步骤就不在重复写了,可以参考:【数据库】MySQL的安装与简单使用
安装完MySQL后,我们到XMPP官方网站下载需要的东西(openfire,Adium,Spark(新版暂不支持MAC),xmppframework)找不到的朋友也可以到 XMPP资源 下载
密码:j33c
分别在服务器,客户端,框架里面找到以下几个资源进行下载
Openfire:

Adium:
Spark:
xmppframework:
下载完成后,我们先来安装Openfire配置服务器

因为Openfire是JAVA语言写的,所以需要JAVA环境的支持,我们要检测一下电脑是否安装了JAVA环境:
打开终端 —— 输入java-version ———— 如果有提示信息,证明有安装,如果没有———— JDK下载 ——
安装
接下来打开 系统偏好设置(记得先完全退出再重新打开,因为有缓存,可能看不到图标) —— 找到Openfire并打开 ——查看是否连接状态。
接着我们来配置Openfire
1. 配置数据库(在我们配置好的Mysql内创建一个专门给openfire使用的数据库)
* 导入Openfire里数据库表脚本文件
* 配置openfire管理员密码
首先需要找到脚本文件
Openfire的安装位置在/usr/local/openfire/内,数据库脚本保存在resources/database文件夹下



接下来就可以访问openfire文件夹了

接下来打开MySQLWorkbench(MySQL管理工具)

OK,导入完毕。接下来就是Openfire的一些配置 —— 语言 —— 服务器设置 —— 数据库设置 —— 外形 ——管理员设置

1.

2.


3.

4.

5.


6.

7. 到此,配置完成。

8. 接下来,简单看一下怎么使用openfire后台

就先更到这里,接下来就是【即时通讯】XMPP调试与简单使用

如果有什么错误或者问题,请联系我,转载请注明出处,谢谢!

【即时通讯】即时通讯及XMPP概述及…的更多相关文章

  1. JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

    JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...

  2. iOS实现XMPP通讯(二)XMPP编程

    项目概述 这是一个可以登录jabber账号,获取好友列表,并且能与好友进行聊天的项目. 使用的是第三方库XMPPFramework框架来实现XMPP通讯. 项目地址:XMPP-Project 项目准备 ...

  3. 使用LIBUSB实现和自定义通讯设备通讯--MFC代码在末尾

    LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动 在libusb的bin目录下有一个inf_wirzed.exe的文件,该文件 ...

  4. Omi框架学习之旅 - 组件通讯(group-data通讯) 及原理说明

    childrenData的方式可以批量传递数据给组件,但是有很多场景下data的来源不一定非要都从childrenData来, childrenData是个数组,会和组件的顺序一一对应,这就给不同传递 ...

  5. Omi框架学习之旅 - 组件通讯(data通讯) 及原理说明

    接着上一篇的data-*通讯,这篇写data通讯. data通讯主要为了复杂的数据通讯. 老规矩:先上demo代码, 然后提出问题, 之后解答问题, 最后源码说明. class Hello exten ...

  6. net 串口通讯 网口通讯(Socket)

    1.串口通讯 2.网口(Socket) 源码下载:源码附件

  7. 【即时通讯】XMPP调试与简单使用

    上篇讲了[即时通讯]即时通讯及XMPP概述及环境配置,接下来我们就要进行调试,看看是否可用! 在测试之前我们需要先事先保存一些东西,以便后面使用 —— 登录openfire后台 ——获取服务器名和端口 ...

  8. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. Android即时通讯开发之XMPP (一)初识XMPP协议和asmack

    在讲XMPP和asmck之前 ,我还是先分享一些资源文档,如果你有耐心,可以直接忽略我下面所写的.下面有关XMPP的介绍大部分是摘抄网上的文档,后面我会写一些基于XMPP协议和asmck开源库的聊天室 ...

随机推荐

  1. html/css基础篇——DOM中关于脱离文档流的几种情况分析

    所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版中拿走. ...

  2. 自己写的一个简单的jQuery提示插件

    代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var divtipsstyle = &qu ...

  3. 解读 C 语言中的指针

    我想对很多学习C语言的新手来说,指针无疑是一个难点.但是,我觉得指针也是C语言特别重要的一个特性.也许,你在除了C和C++以外的编程语言中,很少看到指针.而C++中,也多用引用,而非指针.指针,作为一 ...

  4. http服务器返回状态代码含义

    100 - 表示已收到请求的一部分,正在继续发送余下部分. 101 - 切换协议. 2xx - 成功.服务器成功地接受了客户端请求: 200 - 确定.客户端请求已成功. 201 - 已创建. 202 ...

  5. Expression<Func<TObject, bool>>与Func<TObject, bool>的区别

    Func<TObject, bool>是委托(delegate) Expression<Func<TObject, bool>>是表达式 Expression编译后 ...

  6. 其实Unix很简单

    很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验.在绝大多数时候,我发现问这些问题的朋友都有两个特点: 1)对Unix有 ...

  7. HDU 1237 简单计算器 栈

    额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...

  8. 献给广大it从业人士:早睡早起,晚睡也早起

    早睡早起占人体健康的百分之七十:心态.饮食.及时调理各占百分之十,我们就可以知道早睡早起的重要性. 我们白天是放电,晚上睡觉是充电.晚上只冲了50%的电,白天还要释放100%,那50%哪来的?就是从五 ...

  9. socket.io,系统api,

    原文:http://www.cnblogs.com/xiezhengcai/p/3956401.html 1. 服务端 io.on('connection',function(socket)); 监听 ...

  10. iCheck.js

    一.iCheck:http://www.bootcss.com/p/icheck/ 1.选择一个颜色主题,网上有,有了一个肤色主题,然后就是把这个肤色主题的css文件复制到iCheck文件夹里面 2. ...