在讲解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. C# 控制台或者winform程序开启http的监听状态

    1 public class THttpListener { HttpListener listerner; /// <summary> /// /// </summary> ...

  2. UWP开发入门(二十一)——保持Ui线程处于响应状态

    GUI的程序有时候会因为等待一个耗时操作完成,导致界面卡死.本篇我们就UWP开发中可能遇到的情况,来讨论如何优化处理. 假设当前存在点击按钮跳转页面的操作,通过按钮打开的新页面,在初始化过程中存在一些 ...

  3. shell脚本专题之-----------全自动编译安装mysql

    mysql的编译安装,在博客 开源服务专题之--------mysql的编译安装 中已经说明了,但是还是比较麻烦,尤其是一大堆命令,来手动执行,稍有不慎,就会出错.生产上一般都是先在本地测试环境进行自 ...

  4. Open Audio Library

    Open Audio Library OPENAL是一个音效API,负责系统和声卡之间的沟通,几乎没有一个API能达到她的全部潜能.由 Creative公司.nvidia公司 和 Loki工作室 发起 ...

  5. C# 可空值类型

    一个值类型永远不可能为null,但是当数据库中的某列数据允许为空时,或者另一种语言中的数据类型(引用类型)对应C#的是值类型,当需要和另外的语言交互时,就有可能需要处理空值的问题. 所以,CLR中引用 ...

  6. 自己对Debug的一些感悟

    A.13-03-06记. 1.当项目中发现bug的时候,首先考虑如何重现,能够重现的bug比较好找寻根源. 2.思考下以前是否发现过类似bug,是否由一些外部配置所决定. 3.有循环时候注意临界条件.

  7. mvc 修改 删除 linq

    Models文件夹里面可以Linq,Entity两种映射框架,也允许有ADO的操作,甚至可以ADO代码和映射代码一起操作 控制器当中允许有相同的方法名,类似在做修改时有两个Modify方法,但是MVC ...

  8. Android对话框自定义标题

    Android自带的对话框标题不好看,如果我们需要给弹出的对话框设置一个自己定义的标题,可以使用AlertDialog.Builder的setCustomTitle()方法. 定义一个对话框标题的ti ...

  9. 使用PackageManager获得应用(包)信息

    PackageManager是Android中一个很有用的类,能够获取已安装的应用(包)的信息,如应用名称.图标.权限,安装.删除应用(包)等. 以下代码可以获得已安装应用(包)的信息: // 包管理 ...

  10. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...