基于Smack3.0.4+ Openfire3.10.2下学习开发IM(一)实现用户登录、修改密码、删除指定用户和注册新用户等分析

java哥 阅读:278 2021-03-31 22:22:25 评论:0

以前学习过用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,而我选用的Smack是3.0.4版本)

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


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

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

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

package com.openfire.util; 
 
import org.jivesoftware.smack.ConnectionConfiguration; 
import org.jivesoftware.smack.XMPPConnection; 
 
public class SmackConnectionUtil { 
	private static XMPPConnection connection = null; 
 
	public static XMPPConnection getInstance(String serverName, int port) { 
		if (connection == null) { 
			ConnectionConfiguration config = new ConnectionConfiguration(serverName, port); 
			config.setSASLAuthenticationEnabled(false); 
			connection = new XMPPConnection(config); 
 
		} 
		return connection; 
	} 
 
} 

第二、实现登录

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

/** 
	 * 登录 
	 *  
	 * @param connection 
	 *            xmpp服务器连接 
	 * @param username 
	 *            登录帐号 
	 * @param password 
	 *            登录密码 
	 * @return 
	 */ 
	public static boolean login(XMPPConnection 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(XMPPConnection connection, String username, String password, String newpassword) { 
		try { 
			if (connection == null) 
				return false; 
			connection.connect(); 
			/** 登录 */ 
			connection.login(username, password); 
			/** 用户操作实例对象:AccountManager */ 
			connection.getAccountManager().changePassword(newpassword); 
			return true; 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
		return false; 
	} 

第四:删除

关键代码:很简单吧!

/** 
	 * 删除 
	 *  
	 * @param connection 
	 *             xmpp服务器连接	 
	 * @return true、删除成功 false、删除失败 
	 * @throws XMPPException  
	 */ 
	public static boolean delete(XMPPConnection connection) { 
		 
		if (connection == null) 
			return false; 
		try { 
			connection.connect(); 
			/** 登录(openfire 管理员的账户和密码) :提示执行删除指令,会删除登入的指定用户*/ 
			connection.login("admin", "769023183"); 
			connection.getAccountManager().deleteAccount(); 
		} catch (XMPPException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		}   
		return true; 
		 
		 
		 
	}

第四:注册

关键代码:很简单吧!

	/** 
	 * 注册 
	 *  
	 * @param account 
	 *            注册帐号 
	 * @param password 
	 *            注册密码 
	 * @return true、注册成功 false、注册失败 
	 * @throws XMPPException  
	 */ 
	public static boolean regist(XMPPConnection connection, String account, String password){ 
		if (connection == null) 
			return false;		 
		try { 
			connection.connect(); 
			AccountManager amgr = connection.getAccountManager(); 
			amgr.createAccount(account, password); 
		} catch (XMPPException e) { 
			// TODO Auto-generated catch block 
			return false;			 
		} 
		return true; 
	}
哦,这么晚了,今天的代码就编写到此。明天进入第二讲开发。(IM的分组、好友和头像)  源码下载地址:openfire+smack3.0.4的Demo




声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号