基于smack的即时聊天系统之登陆功能的实现

简介:

登陆功能的实现:主要思路是:1.配置连接信息2.创建XMPP连接对象;3.建立连接;4.登陆

1.配置连接信息

主要是配置服务器IP和端口号,ConnectionConfiguration()函数中第一个参数是服务器IP地址,第二个参数是端口号。第一个参数也可以写成服务器主机名,要是写为服务器主机名的话,需要修改客户端host,在hosts中添加服务器IP地址和其主机名,如下图所示。host文件在windows系统中的路径为:C:\WINDOWS\system32\drivers\etc\hosts。


配置连接信息的代码为:

org.jivesoftware.smack.ConnectionConfigurationconnConfig = new org.jivesoftware.smack.ConnectionConfiguration("openfireserver",5222);
this.config.setCompressionEnabled(true);
           
            //允许重连
            this.config.setReconnectionAllowed(true);
 
            this.config.setSendPresence(true);


2.建立XMPP连接对象

把上一步创建的connConfig作为参数创建XMPP连接对象

创建代码为:

XMPPConnection connection = newXMPPConnection(connConfig);

3.建立连接

调用XMPP连接对象的connect()方法建立连接。

代码为:

connection.connect();

4.登陆

用预先注册好的用户名和密码做为XMPP连接对象的login()方法的参数进行登陆。注意此处的用户名一定要写成userName@serverIP的形式。

登陆代码为:

connection.login("userName@serverIP","password");

用户登录的完整代码段为:

public intLogin(String userName, String passWord, String serverName)
       {
              this.config = newConnectionConfiguration(serverName, 5222);
              this.config.setCompressionEnabled(true);
             
              //允许重连
              this.config.setReconnectionAllowed(true);
 
              this.config.setSendPresence(true);
 
              configure(ProviderManager.getInstance());
 
              //创建连接对象
              this.connection = newXMPPConnection(this.config);
             
              //连接,登陆
              try
              {
                     this.connection.connect();
                     this.connection.login(
                                   userName,
                                   passWord,
                                   org.jivesoftware.spark.util.StringUtils.modifyWildcards(
                                                 this.resource).trim());
                     this.sessionManager.setServerAddress(this.connection
                                   .getServiceName());
                     this.sessionManager.initializeSession(this.connection,userName,
                                   passWord);
                     this.sessionManager.setJID(this.connection.getUser());
 
                     SparkManager.getConnection().sendPacket(
                                   newMUCPacket("logining", "com.cetc32.muc", SparkManager
                                                 .getSessionManager().getBareAddress()));
                     this.userName = userName;
                     return 0;
              } catch (XMPPException e1)
              {
                     e1.printStackTrace();
              }
              return -1;
       }


相关文章
|
6月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
320 2
|
8月前
|
监控 数据库 数据安全/隐私保护
编写VBScript实现办公室上网监控软件的用户管理功能:权限控制与身份验证
在开发办公室上网监控软件时,用户管理是一个至关重要的功能。通过VBScript,我们可以实现权限控制与身份验证,确保只有授权用户可以访问监控数据,并对其进行管理。
198 1
微信、QQ、TIM均可用,这款5M的小巧文件管理工具真牛!
微信、QQ应该是目前国内活跃用户、打开率这些指标表现最好的2款应用,甚至没有之一。
微信、QQ、TIM均可用,这款5M的小巧文件管理工具真牛!