在讲解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. Struts2 源码分析——Hello world

    新建第一个应用程序 上一章我们讲到了关于struts2核心机制.对于程序员来讲比较概念的一章.而本章笔者将会亲手写一个Hello world的例子.所以如果对struts2使用比较了解的朋友,请跳过本 ...

  2. golang内存分配

    golang内存分配 new一个对象的时候,入口函数是malloc.go中的newobject函数 func newobject(typ *_type) unsafe.Pointer { flags ...

  3. elasticsearch 查询(match和term)

    elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...

  4. Json字符串反序列化

    using DevComponents.DotNetBar; using MyControl; using Newtonsoft.Json; using System; using System.Co ...

  5. ligerUI布局时,Center中的Tab高度太小问题解决

    1.0 引用的js,css <link href="/Content/scripts/ligerUI/skins/Aqua/css/ligerui-all.css" rel= ...

  6. 二路归并排序算法实现-完整C语言程序

    /*********************************************************************************************** 1.设 ...

  7. 使用NISI制作.Net程序服务安装包

    1.开篇之前先说一说NISI是什么. NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置 ...

  8. 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例

    [源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者:webabcd 介绍背水一战 Windows 10 之 资源 资源限定符概述 资源限定符示例 ...

  9. SSH实例(3)

    src文件夹的结构如下: clasDao文件: package com.school.service; import java.util.List; import com.school.dao.Cla ...

  10. Android接收短信

    Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver ...