XMPP之连接服务器并登录
2016-04-19 11:28
363 查看
1.XMPPJID
使用xmpp协议登录时,需要用到XMPPJID类,它相当于我们用的QQ帐号或者邮箱帐号,用于标识不同的用户。
XMPPJID类有三个数据成员,分别是NSString *user,NSString *domain,NSString *resource,分别表示用户名,域名,以及登录的资源
例如:cctest@xmpp.test/iphone 就是一个XMPPJID的一个形式
通常创建一个XMPPJID实例的方法有三种,分别是
+ (XMPPJID *)jidWithString:(NSString *)jidStr;
+ (XMPPJID *)jidWithString:(NSString *)jidStr resource:(NSString *)resource;
+ (XMPPJID *)jidWithUser:(NSString *)user domain:(NSString *)domain resource:(NSString
*)resource;
创建方法如下:
XMPPJID *myjid = [XMPPJID jidWithString:@"cctest@xmpp.test"];
XMPPJID *myjid = [XMPPJID jidWithString:@"cctest@xmpp.test" resource:@"iphone"]
XMPPJID *myjid = [XMPPJIDjidWithUser:@"cctest" domain:@"xmpp.test"resource:@"iphone"];
2.登录
- (void)loginWithName:(NSString *)user Password:(NSString *)password {
self.password = password;
if ([self.streamisConnected])
{ //首先判断当前是否连接,未连接则再连接服务器
[selfdisconnected];
}
self.myjid = [XMPPJIDjidWithUser:user
domain:myDomainresource:@"iphone"];
[self.streamsetHostName:@"10.108.136.59"];
[self.streamsetMyJID:self.myjid];
NSError *error =nil;
if (![self.streamconnectWithTimeout:XMPPStreamTimeoutNoneerror:&error
]) { //链接超时,输出错误
NSLog(@"Connect Error: %@", [[erroruserInfo]
description]);
}
}
connect成功之后会依次调用XMPPSreamDelegate的方法,首先调用
- (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GFDAsyncSocket *)socket,
然后调用
- (void)xmppStreamDidConnect:(XMPPStream *)sender;
该方法用来监测是否连接成功,在该方法下面使用xmppStream的authenticateWithPassword方法进行密码验证,成功的话会响应以下代理方法,就是这个
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender;该方法用来确认密码已认证正确
使用xmpp协议登录时,需要用到XMPPJID类,它相当于我们用的QQ帐号或者邮箱帐号,用于标识不同的用户。
XMPPJID类有三个数据成员,分别是NSString *user,NSString *domain,NSString *resource,分别表示用户名,域名,以及登录的资源
例如:cctest@xmpp.test/iphone 就是一个XMPPJID的一个形式
通常创建一个XMPPJID实例的方法有三种,分别是
+ (XMPPJID *)jidWithString:(NSString *)jidStr;
+ (XMPPJID *)jidWithString:(NSString *)jidStr resource:(NSString *)resource;
+ (XMPPJID *)jidWithUser:(NSString *)user domain:(NSString *)domain resource:(NSString
*)resource;
创建方法如下:
XMPPJID *myjid = [XMPPJID jidWithString:@"cctest@xmpp.test"];
XMPPJID *myjid = [XMPPJID jidWithString:@"cctest@xmpp.test" resource:@"iphone"]
XMPPJID *myjid = [XMPPJIDjidWithUser:@"cctest" domain:@"xmpp.test"resource:@"iphone"];
2.登录
- (void)loginWithName:(NSString *)user Password:(NSString *)password {
self.password = password;
if ([self.streamisConnected])
{ //首先判断当前是否连接,未连接则再连接服务器
[selfdisconnected];
}
self.myjid = [XMPPJIDjidWithUser:user
domain:myDomainresource:@"iphone"];
[self.streamsetHostName:@"10.108.136.59"];
[self.streamsetMyJID:self.myjid];
NSError *error =nil;
if (![self.streamconnectWithTimeout:XMPPStreamTimeoutNoneerror:&error
]) { //链接超时,输出错误
NSLog(@"Connect Error: %@", [[erroruserInfo]
description]);
}
}
connect成功之后会依次调用XMPPSreamDelegate的方法,首先调用
- (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GFDAsyncSocket *)socket,
然后调用
- (void)xmppStreamDidConnect:(XMPPStream *)sender;
该方法用来监测是否连接成功,在该方法下面使用xmppStream的authenticateWithPassword方法进行密码验证,成功的话会响应以下代理方法,就是这个
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender;该方法用来确认密码已认证正确
相关文章推荐
- Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)
- LeetCode[Array]---- 4Sum
- 找实习生总结
- 142. Linked List Cycle II
- MapReduce学习资料
- 组织建设及经验总结
- BI及大数据
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月19日)
- 安卓SDK更新 国内镜像站点记录
- BZOJ4006 JLOI2015 管道连接(斯坦纳树生成森林)
- iwinfo 的使用
- Cacti的基本安装及配置
- InnoDB与Myisam的六大区别
- Java线程同步synchronized,Lock,Condition
- Android Bitmap convert to ByteArray
- ios切换界面
- Oracle存储过程的若干问题备忘
- struts2与spring整合时的单例问题
- 二进制在权限系统中的应用
- 智慧交通随想