基于Smack4.1.4+ Openfire3.10.2下学习开发IM(一)实现用户登录、修改密码和注销等

以前学习过用Scoket 建立聊天,简单的建立聊天是没问题的,但如果要实现多人复杂的聊天,后台服务器代码就比较复杂,对于我这新手来讲就比较难了。后来在网上看到用openfire做服务器,利用强大的Smack API库来实现IM聊天就简单多了。 

网上也有很多关于这方面的资料,我就在这里把网上的资料和自己的理解总结一下和大家一起交流学习。

需要用到以下几个工具:

Openfire  最新版本(openfire 3.10.2) 

下载地址:http://www.igniterealtime.org/downloads/index.jsp

安装配置可参考:http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html

Smack 最新版本(Smack4.1.4)

下载地址:http://www.igniterealtime.org/downloads/index.jsp


需要安装的安装好,需要下载的下载好(这里就不多作介绍)。创建项目工程,导入ASmack jar包,OK,下面就一起去学习怎么实现 用户注册、登录、修改密码和注销等一些功能!

首先第一、与服务器建立好连接

关键代码:192.169.20.246为服务器IP,5222为服务器端口号

package com.openfire.util;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

public class SmackConnectionUtil {
	private static XMPPTCPConnection connection =null;
	//静态工厂方法   
    public static XMPPTCPConnection getInstance(String serverName,  int port) {  
         if (connection == null) {    
        		XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()    	 
      				  .setServiceName(serverName)
      				  .setHost(serverName)
      				  .setPort(port)
      				  .build();
        		connection = new XMPPTCPConnection(config);
         }    
        return connection;  
    }  
	

}

第二、实现登录

关键代码: 代码很简单不做太多解释

package com.openfire.util;

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;

public class UserUtil {

	/**
	 * 登录
	 * 
	 * @param connection
	 *            xmpp服务器连接
	 * @param username
	 *            登录帐号
	 * @param password
	 *            登录密码
	 * @return
	 */
	public static boolean login(AbstractXMPPConnection connection, String username, String password) {
		try {
			if (connection == null)
				return false;
			connection.connect();
			/** 登录 */
			connection.login(username, password);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

}
第三、修改密码

关键代码:同样很简单

/**
	 * 更改密码
	 * 
	 * @param connection
	 *            xmpp服务器连接
	 * @param username
	 *            帐号
	 * @param password
	 *            旧密码
	 * @param password
	 *            新密码
	 * @return
	 */
	public static boolean update(AbstractXMPPConnection connection, String username, String password,String newpassword) {
		try {
			if (connection == null)
				return false;
			connection.connect();
			/** 登录 */
			connection.login(username, password);
			/** 用户操作实例对象:AccountManager */
			AccountManager manager=AccountManager.getInstance(connection);
			manager.sensitiveOperationOverInsecureConnection(true);
			manager.changePassword(newpassword);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

第四:注销

关键代码:很简单吧!

/**
	 * 注销
	 * 
	 * @param connection
	 *            xmpp服务器连接	
	 * @param username
	 *            帐号
	 * @param password
	 *            密码
	 * @return
	 */
	public static boolean deleteAll(AbstractXMPPConnection connection,String username, String password) {
		try {
			if (connection == null)
				return false;
			connection.connect();
			/** 登录 */
			connection.login(username, password);
			/** 用户操作实例对象:AccountManager */
			AccountManager manager=AccountManager.getInstance(connection);
			manager.deleteAccount();
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}
哦,这么晚了,今天的代码就编写到此。明天进入第二讲开发。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值