您的位置:首页 > 其它

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;该方法用来确认密码已认证正确
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: