基于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;
       }
时间: 2024-09-15 22:18:11

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

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

功能实现流程为: 1.文件发送方用户登录 2.确定文件的接收方和待发送文件路径 3.获取连接 4.根据连接获取文件接收方的完整jid(例如user@192.168.1.34/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(

java源码-基于java的即时聊天系统设计与实现源代码

问题描述 基于java的即时聊天系统设计与实现源代码 我是一个菜鸟,最近在做一个即时聊天系统,希望给一些,关于文件传输方面的代码,这些大家喽 解决方案 http://blog.csdn.net/u011596810/article/details/39003523 这个是讲socket请求连接,可以看看 解决方案二: 基于websocket+java聊天系统的实现 解决方案三: 如果你是web系统的话,可以考虑h5的websocket 解决方案四: node.js+html5+webRTC 解决

delphi用数据库记录账号的登陆功能

用delphi做了一个霸气的登陆界面 用数据库记录账号的登陆功能 的实现   第一步配置con1控件 第二步配置adoquery1属性

使用Mina框架开发QQ Android 客户端(3) 登陆功能的实现

在博客中有登陆界面的文章http://blog.csdn.net/vestigge/article/details/8124674 就不在重复了,直接看登陆的代码, 用Mina传递字符串上节已经看过了,要实现传递对象,也非常简单,只需要修改一下过滤器: chain.addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 在Android客户端,登陆的Activity中: publ

基于jquery实现的自动补全功能

 这篇文章主要介绍了基于jquery实现的自动补全功能的方法,涉及jQuery操作数据实现补全的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了基于jquery实现的自动补全功能的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: $(function() { // 自动补全 var maxcount = 0;// 表示他最大的值 var thisCount =0;// 初始化他框的位置 $("body").prepend("<div

哎哎哎!急-请求大神帮忙用JAVA写一个基于UDP的语音聊天系统

问题描述 请求大神帮忙用JAVA写一个基于UDP的语音聊天系统 有报酬!!?谢谢!!急急 解决方案 有报酬,两个馒头.呵呵...... UDP 实际简单,但语音部分还是有一些工作量的.

ios-iOS 开发,基于GCDAsyncSocket的即时通讯是怎样在两个用户间完成的

问题描述 iOS 开发,基于GCDAsyncSocket的即时通讯是怎样在两个用户间完成的 iOS 开发,基于GCDAsyncSocket的即时通讯是怎样在两个用户间完成的?比如a发一条信息给b,这条信息是怎样经过服务器到达b的 解决方案 A即时发送端也是 接受端 开不同的端口去监听,B也一样,一直监听与A发送端 端口相同的接口,这样A发送数据到 服务端B的端口XXX B一直监听者自身端口的XXX 这样A发送的消息 B就可以接受到 解决方案二: 两个客户端都连在服务器上,各自发送数据给服务器,然

微信内侧微信登陆功能和UnionID机制 暴露“连接一切”的野心

6月27日,微信同时开放微信登陆功能的内测和UnionID机制,当前,很 多人还不知具体情况,我做下个人的阐释: 微信登陆功能,拥有微信支付权限的移动应用(App和游戏)和网站,可以申请微信登陆权限.这在我们玩微信游戏时就可以体验到微信登陆功能,在此之前微信登陆功能只开放给"国家队",从现在开始也会逐渐开放给其他第三方移动应用和网站. UnionID机制,官方的解释是: 通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通过