基于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()方法的参数进行登陆。注意此处的用户名一定要写成[email protected]的形式。

登陆代码为:

connection.login("[email protected]","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;
       }
时间: 2024-12-13 14:35:32

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

基于smack的即时聊天系统之文件传输功能实现

功能实现流程为: 1.文件发送方用户登录 2.确定文件的接收方和待发送文件路径 3.获取连接 4.根据连接获取文件接收方的完整jid(例如[email protected]/MiniQQ 2.3.6),其中MiniQQ 2.3.6为文件接收方用户客户端的resource,必须获取到,否则文件无法发送 5.发送文件 实现代码为: <span style="font-size:18px;">public int TransFile(String toUser, String f

基于smack的即时聊天系统之文件接收功能实现

实现思路为: 1.接收方用户登录 2.获取文件发送方用户名 3.获取需要接收的文件名 4.获取需要接收的文件大小 5.设置文件存放路径 6.接收文件 实现代码为: public int SetTransFileCallBack(final Method method, final Object instance, final String downloadeDir) { FileTransferManager transferManager = new FileTransferManager(

Android基于XMPP的即时通讯2-文件传输

本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager getFileTransferManager() { if (fileManager == null) { ServiceDiscoveryManager sdManager = ServiceDiscoveryManager .getInstanceFor(connection); if (sdMana

node.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载

ode.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载  联系QQ:1026270010  一.课程背景 1.什么是Node.js ? Node.js 是一个可以快速构建网络服务及应用的平台 .该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装. V8引擎执行Javascript的速度非常快,性能非常好.Node对一些特殊用例进行了优化,

WebLogic Server的单点登陆功能--转载

在WebLogic 8.1最新的 SP4版本中,最引人注目的要算是在安全方面,提供了用于和Microsoft Windows客户端进行Single Sign-On的Single Pass Negotiate Identity Assertion Provider.通过该Provider可以轻松完成从前认为技术难度很高的和Windows客户端的Single Sign-On. 这个简单,低成本的SSO解决方案相信对大多数的企业应用来说更具吸引力: 用户只需要开机时登录Windows域,就可以以登录用

用函数实现登陆功能(三次机会),然后在主函数中根据调用后的结果判断 登陆成功与否。

/*3.用函数实现登陆功能(三次机会),然后在主函数中根据调用后的结果判断登陆成功与否.*/#include <string.h>int numb(char use[] ,char password[] ){ if((strcmp(use,"zhouyi")==0)&&(strcmp(password,"nb")==0)) { return 1; } else { return 0; } } #include <stdio.h>

讲诉从酒店服务业到IT行业的心酸取经路,另附拙作 ASP.net(C#)利用SQL Server实现注册和登陆功能

楼主本人姓周,名XX,老家是曾国藩故居的,说起来和古人也算是邻里邻居. 92年出生,去年大专毕业,到现在毕业快要一年了,大学里学的专业是酒店管理,我们对外宣称为"第三产业"呵呵.到这里你们可能会心生疑问,咦,大学里怎么会有"酒店专业",你怎么会选它?说到这,楼主不得不提起一个人,那就是我的堂姐,楼主填志愿那年,人小不懂事,根本不知道如何去选择自己的专业,家里人就更不懂了,所以填志愿的事都在我这个堂姐手里做的主,填的那个学校是湖南长沙的,三年大专制,因为我这个表姐本人

JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implements Interceptor{} //创建方式2: 继承AbstractInterceptor -> struts2的体贴 //帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法 public class MyInterceptor2

实现基于NTP协议的网络校时功能

无论PC端还是移动端系统都自带时间同步功能,基于的都是NTP协议,这里使用C#来实现基于NTP协议的网络校时功能(也就是实现时间同步). 1.NTP原理 NTP[Network Time Protocol]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击. 先介绍下NTP数据包格式(其标准化文档为RFC2030,NTP版本