在讲解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. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...

  2. 十年微软(Microsoft)MVP

    十年微软(Microsoft)MVP,七月一日收到邮件,今早收到从美国微软寄过来的证书!

  3. EasyUI使用tree方法生成树形结构加载两次的问题

    html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...

  4. 【译】java.lang.ThreadLocal

    This class provides thread-local variables. These variables differ from their normal counterparts(副本 ...

  5. 在Win Server 2012中安装.NET Framework 3.5的问题

    在Windows Server 2012 上安装 SQL Server 2012 时,提示 启用 Windows 功能 NetFx3 时出错,错误代码:-2146498298.请尝试从 Windows ...

  6. mysql ,为什么一张表的varchar关联另一张表varchar执行失败的一个原因

    CONSTRAINT `orderdts_ibfk_2` FOREIGN KEY (`address`) REFERENCES `test列` (`address`) 很可能的原因是另一张表的test ...

  7. Tomcat基本使用

    Tomcat基本使用 1 下载并安装 1)下载:到apache官网.www.apache.org     http://jakarta.apache.org(产品的主页) 2)版本: 安装版:wind ...

  8. Java集合源码分析(四)Vector<E>

    Vector<E>简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是 ...

  9. linux非常用但很有用的命令

    查找指定目录下包含指定字符串的所有文件 grep -rl 'abc' / top查看命令的完整启动路径 top 按c top以MB为单位显示内存信息 top -M 查看内存top io趋势 pidst ...

  10. Redis学习笔记1-Redis数据类型

    Redis数据类型 Redis支持5种数据类型,它们描述如下: Strings - 字符串 字符串是 Redis 最基本的数据类型.Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串 ...