在现阶段的通信服务中,各种标准都有。因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通。有了这个协议之后。使用不论什么一个组织或者个人提供的即使通信服务,都可以无障碍的与其它的及时通信服务的用户进行交流。

比如google 公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件。以下我们就谈论一下怎样简单的使用XMPP

 一、环境的搭建。本文採用的是openFire server

  1、下载最新openfire for mac版 http://www.igniterealtime.org/downloads/index.jsp

  2、点击以下图标进行安装JDK 和server

  3、启动后,点击Open Admin Consolebutton,自己主动在浏览器中打开本地web配置页面http://localhost:9090/setup/index.jsp然后进行server配置

  4、将语言设置为中文就可以

  5、设置server地址为本机

  6、设置数据库

  在运行此步骤之前须要做一些准备工作。

1创建数据库 :create database openfire;
2导入openfire资源目录 resources/database下的数据表:source /usr/local/openfire/resources/database/openfire_mysql.sql
7、特性设置

  8、设置openfireserver管理员的帐号和password

  9、安装完毕。点击button登录

  登录后界面例如以下

  10、依照上面操作创建用户password

  11、此时的准备工作基本完毕

 二 导入XMPP

  1、将XMPP所有导入project

  2、导入依赖包

  因为动态库的存在因此须要做下面操作

 三、到眼下为止我们的XMPP成功导入到项目中,以下我们開始编码实现用户登录

  1、在代理里面引入包。而且定义流属性

  2、初始化而且加入代理

#pragma mark 初始化
- (void)setUpStream{ if (_stream==nil) { //1 初始化stream
_stream=[[XMPPStream alloc] init]; //2 加入代理
[_stream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; } }

  3、建立连接

#pragma mark 建立链接
//建立连接
- (void) connect{ //1 初始化
[self setUpStream]; //2 制定server地址,username,password
NSString * userName=@"jereh@jereh.local";
NSString * hostName=@"jereh.local"; //3 设置JID和主机
XMPPJID * jid=[XMPPJID jidWithString:userName]; [self.stream setMyJID:jid];
[self.stream setHostName:hostName]; //4 開始连接
NSError * error;
[self.stream connectWithTimeout:XMPPStreamTimeoutNone error:&error]; if (error) {
NSLog(@"发送连接请求失败");
}else{
NSLog(@"发送连接请求成功");
} }

  5、进行password验证,通过代理方法返回结果

#pragma mark 验证身份请求
-(void)xmppStreamDidConnect:(XMPPStream *)sender{ NSLog(@"链接成功"); //发送身份验证请求
NSString * pwd=@"jereh123";
[self.stream authenticateWithPassword:pwd error:nil];
} #pragma mark password正确
- (void) xmppStreamDidAuthenticate:(XMPPStream *)sender{ NSLog(@"身份验证成功"); //通知server上线
[self onLine];
} #pragma mark password错误
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error{ NSLog(@"身份验证失败");
}

  6、開始连接

  想要了解很多其它内容的小伙伴。能够点击查看源代码,亲自执行測试。

  疑问咨询或技术交流。请增加官方QQ群: (452379712)

作者:杰瑞教育

出处:http://blog.csdn.net/jerehedu/ 

本文版权归烟台杰瑞教育科技有限公司和博客园共同拥有。欢迎转载,但未经作者允许必须保留此段声明。且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

XMPP使用简单介绍--登录的更多相关文章

  1. 开源Jabber(XMPP) IM服务器介绍

    一.摘要 这是我粗略读了一遍Jabber协议和相关技术文章后的产物,有些地方不一定准确.在文章中引用的一些代码来自www.jabber.org上的文章. 二. 什么是Jabber    Jabber就 ...

  2. 7. Swift 基于Xmpp和openfire实现一个简单的登录注册

    1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...

  3. iOS开发拓展篇-XMPP简单介绍

    iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双 ...

  4. iOS开发——网络编程OC篇&(一)XMPP简单介绍与准备

    XMPP简单介绍与准备 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈 ...

  5. CAS单点登录原理简单介绍

    1. SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统. ...

  6. 以登录实例简单介绍Servlet使用

    1.简单介绍 Java Servlet 是执行在 Web server或应用server上的程序,使用 Servlet.您能够收集来自网页表单的用户输入.呈现来自数据库或者其它源的记录.还能够动态创建 ...

  7. XMPP基本内容简单介绍

    即时通讯技术简单介绍 即时通讯技术(IM)支持用户在线实时交谈.假设要发送一条信息,用户须要打开一个小窗体,以便让用户及其朋友在当中输入信息并让交谈两方都看到交谈的内容.有很多的IM系统,如AOL I ...

  8. JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇

    原创说明:本篇博文为本人原创作品,转载请注明出处 1.何为消息中间件 消息中间件是一种在分布式应用中互相交换信息的一种技术,常见的成熟消息中间件有:RabbitMQ.SonicMQ,activeMQ. ...

  9. iOS-iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

随机推荐

  1. 关于Vue中父子组件相互传值

    Header为子组件,Home为父组件,通过子组件调用父组件 运行结果如下 下面是父组件调用子组件的案例 通过button按钮的click事件 图一是父组件Home中的run方法,图二是msg和fun ...

  2. [数位dp] bzoj 3209 花神的数论题

    题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdlib" #include"c ...

  3. Attribute(一)——提前定义特性

    在项目中接触到了Attribute,那么什么是Attribute,有些什么作用呢?这里来了解一下. 一.什么是Attribute Attribute 类将提前定义的系统信息或用户定义的自己定义信息与目 ...

  4. Majority Element:主元素

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  5. new,malloc,GlobalAlloc具体解释

    WINDOWS下最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是栈,而是直接在进程的地址空间中保留一快内存.尽管用起来最不方便. 可是速度快,也最灵活 new,malloc,Glob ...

  6. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  7. jsp出现错误can not find the tag directory /web-inf/tags

    百度google了一大圈没找到中文答案,无奈之下硬着头皮看了一个英文答案http://stackoverflow.com/questions/11502703/eclipse-can-not-find ...

  8. hdu_1166,线段树单点更新

    在刷线段树,参考自http://www.notonlysuccess.com/index.php/segment-tree-complete/ #include<iostream> #in ...

  9. django 笔记11 装饰器

    在views.py创建 一般用来cookies的装饰器 def auth(func): def inner(request, *args, **kwargs): v = request.COOKIES ...

  10. ubuntu创建文件夹桌面快捷方式

    最近在使用dropbox,用来存储一些自己的markdown笔记和pdf文件.觉得放一个快捷方式在桌面上比较方便,但是lxde似乎没有直接创建桌面快捷方式的功能(或者是我没有找到),就上网查了一下,顺 ...