精华内容
下载资源
问答
  • xmpp 注册Registration

    2018-04-11 13:19:58
    在客户端上开发xmpp注册功能,即带内注册。带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号。相反的概念是带外注册(out-of-band registration),例如你必须到某个指定的web页面进行注册。...

    在客户端上开发xmpp的注册功能,即带内注册。


    带内注册指的是未在服务器上开通账号的用户可以通过xmpp协议注册新账号。相反的概念是带外注册(out-of-band registration),例如
    你必须到某个指定的web页面进行注册。
    如果服务器允许带内注册,那么我们就可以通过自己开发的客户端注册新账号。与带内注册相关的协议是XEP-0077。


    这里需要使用到插件 asmack-jse.jar

    由于在Android平台下开发 所以我们用到的是 aSmack,与Smack没有很大的区别

    下载地址:http://code.google.com/p/asmack/downloads/list



    首先最重要的是配置连接

    public static String host = "192.168.1.101";  //自己服务器的IP
        public static int port = 5222;           //开放端口号,openfire默认是5222
        static XMPPConnection connection;  
          
        //依葫芦画瓢  
        static{  
            XMPPConnection.DEBUG_ENABLED = true;  
            ConnectionConfiguration configuration = new ConnectionConfiguration(host, port);  
            connection = new XMPPConnection(configuration);  
            connection.DEBUG_ENABLED = true;  
            ProviderManager pm = ProviderManager.getInstance();  
            configure(pm);  
        }

    注册

    Registration reg = new Registration();  
                    reg.setType(IQ.Type.SET);  
                    reg.setTo(MainActivity.connection.getServiceName());  
                    reg.setUsername(usernameEdt.getText().toString());  
                    reg.setPassword(passwdEdt.getText().toString());  
                    reg.addAttribute("android", "geolo_createUser_android");  
                    System.out.println("reg:" + reg);  
                    PacketFilter filter = new AndFilter(new PacketIDFilter(reg  
                            .getPacketID()), new PacketTypeFilter(IQ.class));  
                    PacketCollector collector = MainActivity.connection  
                            .createPacketCollector(filter);  
                    MainActivity.connection.sendPacket(reg);  
      
                    result = (IQ) collector.nextResult(SmackConfiguration  
                            .getPacketReplyTimeout());  
                    // Stop queuing results  
                    collector.cancel();// 停止请求results(是否成功的结果)  
      
                    if (result == null) {  
                        Toast.makeText(getApplicationContext(), "服务器没有返回结果",  
                                Toast.LENGTH_SHORT).show();  
                    } else if (result.getType() == IQ.Type.ERROR) {  
                        if (result.getError().toString().equalsIgnoreCase(  
                                "conflict(409)")) {  
                            Toast.makeText(getApplicationContext(), "这个账号已经存在",  
                                    Toast.LENGTH_SHORT).show();  
                        } else {  
                            Toast.makeText(getApplicationContext(), "注册失败",  
                                    Toast.LENGTH_SHORT).show();  
                        }  
                    } else if (result.getType() == IQ.Type.RESULT) {  
                        Toast.makeText(getApplicationContext(), "恭喜你注册成功",  
                                Toast.LENGTH_SHORT).show();  
                    }

    登录

    MainActivity.connection.login(usernameEdt.getText().toString(), pwdEdt.getText().toString());  
                        Button loginBtn = (Button) findViewById(R.id.btn_login);  
                        loginBtn.setEnabled(false);  
                        loginBtn.setText("登录成功");



    展开全文
  • xmpp 注册用户时推送的具体xml,从开始到结束的xml,服务器是openfire
  • XMPP写的注册

    2013-12-07 18:55:47
    XMPP下实现注册登录,还是比较容易理解的一份代码。但是关于XMPP的东西还是需要慢慢来!
  • XMPP完成注册和登录

    千次阅读 2016-07-04 22:43:18
    iOS中XMPP简单聊天实现 注册和登录 目录 1. 创建工程,完成简单页面的搭建 页面搭建 2.在登录页面(主页面)完成属性连线 登录页面 注册页面 3.创建文件夹,...

    iOS中XMPP简单聊天实现 注册和登录



    目录

    1. 创建工程,完成简单页面的搭建


    页面搭建

    2.在登录页面(主页面)完成属性连线


    登录页面

    注册页面

    3.创建文件夹,导入xmpp框架,配置工程


    导入静态库

    加上-lxml2

    /usr/include/libxml2 或者 $(SDKROOT)/usr/include/libxml2

    创建pch文件后,加上pch文件的路径:工程名/pch文件名


    pch文件中要导入UIKit框架


    导入框架,配置工程,创建文件夹等

    4.封装xmppManager类

    接口文件:
    #import <Foundation/Foundation.h>#import "XMPPFramework.h"  // 该类主要封装了xmpp的常用方法@interface XMPPManager : NSObject<XMPPStreamDelegate>//通信管道,输入输出流@property(nonatomic,strong)XMPPStream xmppStream;//单例方法+(XMPPManager )defaultManager;//登录的方法-(void)loginwithName:(NSString )userName andPassword:(NSString )password;//注册-(void)registerWithName:(NSString )userName andPassword:(NSString )password;-(void)logout;@end
    实现文件:

    单例:

    #pragma mark 单例方法的实现+(XMPPManager )defaultManager{    static XMPPManager manager = nil;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        manager = [[XMPPManager alloc]init];    });    return manager;}

    重写init方法:

    -(instancetype)init{    if ([super init]){   //1.初始化xmppStream,登录和注册的时候都会用到它    self.xmppStream = [[XMPPStream alloc]init];     //设置服务器地址,这里用的是本地地址(可换成公司具体地址)    self.xmppStream.hostName = @"127.0.0.1";//    设置端口号    self.xmppStream.hostPort = 5222;//    设置代理    [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];    }    return self;}

    注销的实现:

    -(void)logout{//表示离线不可用    XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];//向服务器发送离线消息    [self.xmppStream sendElement:presence]; //断开链接    [self.xmppStream disconnect];}

    接下来实现登录的方法:

     1.初始化一个xmppStream
     2.连接服务器(成功或者失败)
     3.成功的基础上,服务器验证(成功或者失败)
     4.成功的基础上,发送上线消息
    -(void)loginwithName:(NSString )userName andPassword:(NSString )password{//标记连接服务器的目的    self.connectServerPurposeType = ConnectServerPurposeLogin;//这里记录用户输入的密码,在登录(注册)的方法里面使用    self.password = password;//  创建xmppjid(用户0,  @param NSString 用户名,域名,登录服务器的方式(苹果,安卓等)    XMPPJID *jid = [XMPPJID jidWithUser:userName domain:@"chenyuan" resource:@"iPhone8"];    self.xmppStream.myJID = jid;    //连接到服务器    [self connectToServer];}

    连接到服务器的方法:

    -(void)connectToServer{    //如果已经存在一个连接,需要将当前的连接断开,然后再开始新的连接    if ([self.xmppStream isConnected]) {        [self logout];    }    NSError error = nil;    [self.xmppStream connectWithTimeout:30.0f error:&error];    if (error) {        NSLog(@"error = %@",error);    }}

    连接到服务器有可能成功或者失败,所以有相对应的代理方法,首先要在遵循协议:<XMPPStreamDelegate>
    xmppStream的代理方法:
    //连接服务器失败的方法-(void)xmppStreamConnectDidTimeout:(XMPPStream )sender{    NSLog(@"连接服务器失败的方法,请检查网络是否正常");}
    //连接服务器成功的方法-(void)xmppStreamDidConnect:(XMPPStream )sender{    NSLog(@"连接服务器成功的方法");//登录    if (self.connectServerPurposeType == ConnectServerPurposeLogin) {        NSError error = nil;//向服务器发送密码验证 //验证可能失败或者成功        [sender authenticateWithPassword:self.password error:&error];    }//注册    else{        //向服务器发送一个密码注册(成功或者失败)        [sender registerWithPassword:self.password error:nil];    }}

    连接成功后,需要进行验证,注册和登录都需要,就写在一起了。
    //验证成功的方法-(void)xmppStreamDidAuthenticate:(XMPPStream )sender{    NSLog(@"验证成功的方法");    /*       unavailable 离线       available  上线       away  离开       do not disturb 忙碌
         /    XMPPPresence presence = [XMPPPresence presenceWithType:@"available"];    [self.xmppStream sendElement:presence];}

    //验证失败的方法-(void)xmppStream:(XMPPStream )sender didNotAuthenticate:(DDXMLElement )error{    NSLog(@"验证失败的方法,请检查你的用户名或密码是否正确,%@",error);}

    注册:
    -(void)registerWithName:(NSString )userName andPassword:(NSString )password{    self.password = password;//0.标记连接服务器的目的    self.connectServerPurposeType = ConnectServerPurposeRegister;//1. 创建一个jid    XMPPJID jid = [XMPPJID jidWithUser:userName domain:@"chenyuan" resource:@"iPhone8"]; //2.将jid绑定到xmppStream    self.xmppStream.myJID = jid; //3.连接到服务器    [self connectToServer];}

    注册也有代理方法:
    #pragma mark 注册成功的方法-(void)xmppStreamDidRegister:(XMPPStream )sender{    NSLog(@"注册成功的方法");}#pragma mark 注册失败的方法-(void)xmppStream:(XMPPStream )sender didNotRegister:(DDXMLElement *)error{    NSLog(@"注册失败执行的方法");}

    到这里简单的XMPPManager工具类就封装完了。接下来就是在登录页面和注册页面完成登录和注册。
    需要注意的是:xmppStream设置代理的方法:addDelegate: delegateQueue:
        [[XMPPManager defaultManager].xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];

    它可以添加多个代理,所以通过设置代理
    在登录页面当检测到登录成功时,可以在登录验证成功的方法里面push到下一个页面;
    在注册页面注册成功时可以在代理方法里面实现pop回主页面。

    下面是登录页面和注册页面的实现文件:


    登录页面

    注册页面

    到这里,一个简单的能注册和登录的xmpp就完成了。聊天和好友功能稍后会跟上。这个时候你已经可以打开你电脑上的openfile来查看登录你的登录状态了。如果你还不会openfile服务器的配置,点击这里查看

    注意:用户名和密码暂时都是根据服务器得到的,自己可以配置服务器来得到

    展开全文
  • XMPP注册用户时失败,返回错误编号为403,在网上搜了半天找到一条问答 (原文地址:http://bbs.csdn.net/topics/391055333) 原因:ejabberd服务器配置的注册权限未开启 解决方案: 1.进入ejabberd安装...

    服务器版本:ejabberd-15.07

    在XMPP注册用户时失败,返回错误编号为403,在网上搜了半天找到一条问答

    (原文地址:http://bbs.csdn.net/topics/391055333)


    原因:ejabberd服务器配置的注册权限未开启

    解决方案:

    1.进入ejabberd安装目录下 打开conf文件中的ejabberd.yml文件(Xcode可以打开并编辑)


    2.找到如下位置并修改下放红色部分

      ## To disable in-band registration, replace 'allow' with 'deny'.
      register: 
        all: allow

      ## 注册权限打开
      ## Only allow to register from localhost
      trusted_network:
        all: allow           (注意:冒号后面有1个空格,第一次我漏了,报了503错误,加上后就可以了)
      ## loopback: allow
      ## Do not establish S2S connections with bad servers
      ## s2s:
      ##   bad_servers: deny
      ##   all: allow

    3.保存修改并重启服务器

    展开全文
  • 创建XMPP工程,并实现注册和登录功能

    1.创建一个新工程



    2.导入XMPP框架

    最新的XMPP框架下载地址:https://github.com/robbiehanson/XMPPFramework

    将XMPP的几个文件夹拖进工程中,需要的文件如下:


    然后把Sample_XMPPFramework.h改名为XMPPFramework.h

    接下来导入两个依赖库:libresolv.dylib和libxml2.dylib,然后添加header search:


    再添加一个pch文件


    在pch文件中添加如下代码:

    #ifdef __OBJC__
        #import <UIKit/UIKit.h>
    
        #import "XMPPFramework.h"
    #endif
    再然后设置工程的pch文件



    $SRCROOT后面是项目名/pch文件名。

    做完以上步骤,项目就可以编译成功啦!

    现在开始搭建项目的登录界面:

    首先封装一个XMPP工具类:JKXMPPTool

    .h文件

    #import <Foundation/Foundation.h>
    
    @interface JKXMPPTool : NSObject<XMPPStreamDelegate>
    
    @property (nonatomic, strong) XMPPStream *xmppStream;
    // 模块
    @property (nonatomic, strong) XMPPAutoPing *xmppAutoPing;
    @property (nonatomic, strong) XMPPReconnect *xmppReconnect;
    
    @property (nonatomic, assign) BOOL  xmppNeedRegister;
    @property (nonatomic, copy)   NSString *myPassword;
    
    + (instancetype)sharedInstance;
    - (void)loginWithJID:(XMPPJID *)JID andPassword:(NSString *)password;
    - (void)registerWithJID:(XMPPJID *)JID andPassword:(NSString *)password;
    
    @end
    .m文件

    #import "JKXMPPTool.h"
    
    @implementation JKXMPPTool
    
    static JKXMPPTool *_instance;
    + (instancetype)sharedInstance
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _instance = [JKXMPPTool new];
        });
        
        return _instance;
    }
    
    - (XMPPStream *)xmppStream
    {
        if (!_xmppStream) {
            _xmppStream = [[XMPPStream alloc] init];
            
            //socket 连接的时候 要知道host port 然后connect
            [self.xmppStream setHostName:kXMPP_HOST];
            [self.xmppStream setHostPort:kXMPP_PORT];
            //为什么是addDelegate? 因为xmppFramework 大量使用了多播代理multicast-delegate ,代理一般是1对1的,但是这个多播代理是一对多得,而且可以在任意时候添加或者删除
            [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
         
        }
        return _xmppStream;
    }
    
    - (void)loginWithJID:(XMPPJID *)JID andPassword:(NSString *)password
    {
        // 1.建立TCP连接
        // 2.把我自己的jid与这个TCP连接绑定起来(即使匿名登录,依然得设置JID,只是我们可以设置一个任意的JID,例如<span style="font-family: Arial, Helvetica, sans-serif;">anonymous@<domain></span>)
        // 3.认证(登录:验证jid与密码是否正确,加密方式 不可能以明文发送)--(出席:怎样告诉服务器我上线,以及我得上线状态
        //这句话会在xmppStream以后发送XML的时候加上 <message from="JID">
        [self.xmppStream setMyJID:JID];
        self.myPassword = password;
        self.xmppNeedRegister = NO;
        [self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:nil];
    }
    
    //注册方法里没有调用auth方法
    - (void)registerWithJID:(XMPPJID *)JID andPassword:(NSString *)password
    {
        [self.xmppStream setMyJID:JID];
        self.myPassword = password;
        self.xmppNeedRegister = YES;
        [self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:nil];
    }
    
    - (void)goOnline
    {
        // 发送一个<presence/> 默认值avaliable 在线 是指服务器收到空的presence 会认为是这个
        XMPPPresence *presence = [XMPPPresence presence];
        
        //发送复杂一点的出席状态
        //<presence type="avaliable">
        //        <status>我很忙</status>
        //        <show>xa</show>
        //    </presence>
        [presence addChild:[DDXMLNode elementWithName:@"status" stringValue:@"我现在很忙"]];
        [presence addChild:[DDXMLNode elementWithName:@"show" stringValue:@"xa"]];
        
        [self.xmppStream sendElement:presence];
    }
    
    #pragma mark ===== XMPPStream delegate =======
    //socket 连接建立成功
    - (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GCDAsyncSocket *)socket
    {
        NSLog(@"%s",__func__);
    }
    
    //这个是xml流初始化成功
    - (void)xmppStreamDidConnect:(XMPPStream *)sender
    {
        NSLog(@"%s",__func__);
        //匿名登录 会随机生成一个username和JID,这个是在服务器的内存中随机生成,不会写入服务器的数据表,例如生成的jid为<p class="p1"><span class="s1">1nv8l4khxg@im.joker.cn/1nv8l4khxg</span></p>
        //为了防止客户端匿名登录,服务器有策略关闭匿名
        //    [self.xmppStream authenticateAnonymously:nil];
        if (self.xmppNeedRegister) {
            [self.xmppStream registerWithPassword:self.myPassword error:nil];
        } else {
            [self.xmppStream authenticateWithPassword:self.myPassword error:nil];
        }
    }
    
    - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
    {
        NSLog(@"%s",__func__);
    }
    
    //登录失败
    - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error
    {
        NSLog(@"%s",__func__);
    }
    
    //登录成功
    - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
    {
        NSLog(@"%s",__func__);
        
        [self goOnline];
        
        [[NSNotificationCenter defaultCenter] postNotificationName:kLOGIN_SUCCESS object:nil];
    }
    
    
    @end

    然后是登录功能:

    登录按钮的action如下:

    #pragma mark - click event
    /** 登录事件 */
    - (IBAction)loginClick:(id)sender {
        NSString *username = _usernameField.text;
        NSString *password = _passwordField.text;
        
        NSString *message = nil;
        if (username.length <= 0) {
            message = @"用户名未填写";
        } else if (password.length <= 0) {
            message = @"密码未填写";
        }
        
        if (message.length > 0) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil];
            [alertView show];
        } else {
            [[JKXMPPTool sharedInstance] loginWithJID:[XMPPJID jidWithUser:username domain:@"im.joker.cn" resource:@"iOS"] andPassword:password];
        }
    }
    用通知返回登录成功的消息

    - (void)loginSuccess
    {
        NSLog(@"loginSuccess");
        
        [self performSegueWithIdentifier:@"loginSegue" sender:self];
    }

    再然后实现注册的功能:


    - (IBAction)registAction:(id)sender {
        NSString *username = _usernameField.text;
        NSString *password = _passwordField.text;
        NSString *confirm = _confirmField.text;
        
        NSString *message = nil;
        if (username.length <= 0) {
            message = @"用户名未填写";
        } else if (password.length <= 0) {
            message = @"密码未填写";
        } else if (confirm.length <= 0) {
            message = @"确认密码未填写";
        }
        
        if (message.length > 0) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil];
            [alertView show];
        } else if (![password isEqualToString:confirm]) {
            message = @"密码与确认密码不一致";
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:message delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil];
            [alertView show];
        } else {
            [[JKXMPPTool sharedInstance] registerWithJID:[XMPPJID jidWithUser:username domain:@"im.joker.cn" resource:@"iOS"] andPassword:password];
        }
    }
    因为注册时,不需要进行认证,注册会直接返回BOOL结果,所以改进连接代理方法:

    //这个是xml流初始化成功
    - (void)xmppStreamDidConnect:(XMPPStream *)sender
    {
        NSLog(@"%s",__func__);
        if (self.xmppNeedRegister) {
            BOOL result = [self.xmppStream registerWithPassword:self.myPassword error:nil];
            NSNumber *number = [NSNumber numberWithBool:result];
            
            [[NSNotificationCenter defaultCenter] postNotificationName:kREGIST_RESULT object:number];
            
        } else {
            [self.xmppStream authenticateWithPassword:self.myPassword error:nil];
        }
    }

    下载地址:点击下载

    github地址:https://github.com/Joker-King/ChatDemo




    展开全文
  • iOS学习之XMPP注册用户

    2015-09-06 10:35:53
    如果回调xmppStreamDidRegister:表示注册成功 ,回调didNotRegister表示注册失败 - (void) xmppStreamDidRegister: ( XMPPStream *) sender { NSLog (@ "注册成功" ) ; } - (void) xmppStream: ( ...
  • XMPP实现简单的登录注册功能

    千次阅读 2016-03-31 16:15:02
    XMPPFramework框架是通过代理的方式实现消息传递的,所以要实现注册登录功能,先理解一些基本的连接过程: 1.运行后需要和服务器建立一个长连接,系统会反馈连接是否成功 2.成功时需要告诉服务器的用户的密码,...
  • xmpp重连 注册两遍

    2014-04-02 10:24:23
    解决xmpp重连 注册两遍的问题
  • XMPP 用户注册限制解决方案

    千次阅读 2014-10-13 18:34:47
    ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Users are not allowed to register accounts so quickly</text></error> conf/ejabber.yml 文件中添加 registration_...
  • 如题,就是我往openfire注册用户的时候,怎么能创建一个Vcard,我看了下文档,Vcard有个save的方法,但是试了下好像不好使,后台查了下表,对应用户的Vcard依然为空。我自己也是取了一下也取不到。 还有就是Vcard...
  • XMPP 注册gateway及提取roster

    千次阅读 2011-06-05 14:52:00
     代码实现了将XMPP用户test与gmail用户 test@gmail.com 绑定,以及将已经绑定的其它transport的好友列表列出。需要注意的是,在运行程序之前,必须在Openfire Server的gateway页面,选中对应的网关。如需绑定gmail...
  • android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
  • 说明:在即时通信系列XMPP之搭建本地服务器中阐述了通过XAMPP、Openfire工具搭建基于XMPP的服务器端,并使用spark软件进行XMPP客户端的调试。在本文中主要阐述将XMPP添加到工程中,实现iOS中基于XMPP的即时通信。 ##...
  • Tigase XMPP 服务器 Docker 映像 安装了 Tigase XMPP 服务器 (5.2.3) 的 Docker 映像用于评估目的。 请勿在生产环境中使用。 为帐户注册和配置存储设置了非... 您还可以通过 XMPP 注册进一步注册您自己的测试帐户。
  • xmpp 登录注册小结

    2015-04-15 00:35:00
    #pragma mark - XMPP相关的属性和方法定义 /** * 全局xmppstream,只读属性 */ @property (strong,nonatomic,readonly) XMPPStream *xmppStream; /** * 通知服务器用户上线 */ - (void...
  • XMPP下的注册与登录

    2019-04-20 01:21:28
    NULL 博文链接:https://wiseideal.iteye.com/blog/1893668
  • 摘要: 本文定义了一个XMPP协议扩展用于基于XMPP的即时消息服务器和其他XMPP网络上的服务(例如群聊房间以及和非XMPP的IM服务之间的网关)的带内注册. 本协议可以通过使用数据表单来扩展, 这可以使得服务在注册过程中...
  • android asmack 注册 登陆 聊天 多人聊天室 文件传输ASmack.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
  • xmpp的使用 android版本

    2018-08-31 12:10:43
    android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
  • D3Xmpp 是一个完整的 XMPP 的 Android 的项目服务端使用 openfire 3.9.3客户端使用 Android 4.2.2集成第三方:百度地图sdkasmack.jaruniversal-image-loader-1.9.3.jar功能注册登录会员会员个人资料修改基本聊天语音...
  • 众所周知,Openfire的注册方式一般有三种: 1.带内注册 ---- In-Band Registration....code4app上有另外一个XMPP的带内注册demo详细的示范了这个方法(不是我写的)。 优点:不需假设额外的服务器端,适合对ja
  • 基本的登录和注册模块demo,xmpp连接,tomcat
  • 摘要: 本文定义了一个XMPP协议扩展来实现实体请求,服务器执行的,高级XMPP message 节处理, 包括可靠数据传输, 时间敏感递送, 和临时消息的过期. 作者: Matthew Miller, Peter Saint-Andre 版权: © 1999 - 2010 ...
  • XMPP的安卓源码

    2015-04-29 18:05:52
    基于xmpp协议,使用asmack库开发的一个android测试demo,有防被系统杀死机制。
  • 一般登陆/注册 出错,会在认证失败这里打印出error信息 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> 其实,XMPP认证...
  • XMPP——Smack[3]用户列表,头像,组操作,用户操作 转载请注明出处:http://blog.csdn.net/wklken/archive/2011/06/01/6460112.aspx 上一篇主要是会话的管理 继续,这是显示用户列表方面的   1. 用户...
  • 群聊的xmpp协议格式

    2018-08-06 18:33:46
    来自Jabber/XMPP中文翻译计划   本文的英文原文来自XEP-0045 XEP-0045: 多用户聊天 摘要: 本文定义了一个XMPP协议扩展用于多用户文本会议.即多个XMPP可以在一个房间或频道互相交流信息, 类似互联网中继聊天系统...
  • 一、即时通讯 什么是即时通讯、 即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷,服务提供商也提供了越来越丰富的...XMPP(XML,Messages,Presence,Prot...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,373
精华内容 3,349
关键字:

xmpp注册