基于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;
       }


相关文章
|
8月前
|
应用服务中间件 PHP 数据库
使用LightPicture开源搭建私人图片管理系统并远程访问
今天,笔者就为大家展示,如何使用Cpolar内网穿透与Lightpicture组合,将个人电脑改造成能随时上传、下载或访问,并能生成外链的图床服务器。
124 0
使用LightPicture开源搭建私人图片管理系统并远程访问
|
4月前
|
机器人 PHP
QQ云端机器人登录系统php源码
QQ云端机器人登录系统php源码
198 4
|
5月前
|
小程序 安全 JavaScript
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
|
10月前
|
iOS开发 MacOS Windows
比微信文件传输助手更好用的传输工具|Telegram
比微信文件传输助手更好用的传输工具|Telegram
|
11月前
|
Shell Linux Android开发
支付宝二维码脱机认证库测试过程记录(andorid平台adb shell验证)
支付宝二维码脱机认证库测试过程记录(andorid平台adb shell验证)
|
网络安全 数据安全/隐私保护 Android开发
想知道Android手机怎么远程登录到系统后台吗?看这里
想知道Android手机怎么远程登录到系统后台吗?看这里
想知道Android手机怎么远程登录到系统后台吗?看这里
|
移动开发 网络协议 前端开发
为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统
websocket是个啥? webSocket是一种在单个TCP连接上进行全双工通信的协议 webSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输
为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统
|
SQL JSON 前端开发
easyswoole实现在线聊天室功能
easyswoole实现在线聊天室功能
96 0
easyswoole实现在线聊天室功能
|
Java
springboot业务功能实战(二十)连接内外网邮箱配置全解析,实现邮件提醒功能
springboot业务功能实战(二十)连接内外网邮箱配置全解析,实现邮件提醒功能
310 0
springboot业务功能实战(二十)连接内外网邮箱配置全解析,实现邮件提醒功能
网站集成QQ登录功能
最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一下,希望对有这方面需求的朋友有所帮助。
1052 0