XMPP——Smack[1]连接、登陆及账户操作
临毕业前,应需求,花了三天写了个小的聊天工具,貌似简陋得很….若有机会再完善吧,目前毕业季,处理毕业事宜,还要准备即将的入职。
眼瞅着大学四年就这么结束了,哎。
开始吧,四篇博文简单介绍下基本实现,由于时间有限,功能不是十分丰富,有兴趣的同学自己研究下协议和具体的实现
需求:
基于XMPP的IM工具,需实现和gtalk实现通信,需实现同spark的通信,需架设服务器,实现同自身客户端的通信,传文件,视频聊天
写完未实现需要改进的地方:离线消息,离线文件
一、XMPP
XMPP : The Extensible Messaging and Presence Protocol
中文全称:可扩展通讯和表示协议
简介:
可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求 - 响应服务中的 XML 数据元流式传输。XMPP 以 Jabber 协议为基础,而 Jabber 是即时通讯中常用的开放式协议。
二、Smack
Smack是一个开源,易于使用的XMPP(jabber)客户端类库。
Smack API, 是一个 Java 的XMPP Client Library,也是由Jive Software开发。 优点:编程简单。 缺点:API并非为大量并发用户设计,每个客户要1个线程,占用资源大,1台机器只能模拟有限(数千个)客户.
smack是一个用 java 写的XMPP客户端代码库, 是 spark 的核心.
二、连接及断开
基本方法
XMPPConnection connection = new XMPPConnection("gmail.com");
connection.connect();
实现的方法
- public static XMPPConnection getConnection(String domain) throws XMPPException {
- XMPPConnection connection = new XMPPConnection(domain);
- connection.connect();
- return connection;
- }
- public static XMPPConnection getConnection(String domain,int port) throws XMPPException {
- ConnectionConfiguration config = new ConnectionConfiguration(domain,port);
- XMPPConnection connection = new XMPPConnection(config);
- connection.connect();
- return connection;
- }
断开
connection.disconnect();
四、登陆
connection.login("javatest2011@gmail.com", "*****");
五、账户操作
可以对账户进行基本操作,包括注册,注销,修改密码
- /**
- * 注册用户
- * @param connection
- * @param regUserName
- * @param regUserPwd
- * @return
- */
- public static boolean createAccount(XMPPConnection connection,String regUserName,String regUserPwd)
- {
- try {
- connection.getAccountManager().createAccount(regUserName, regUserPwd);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- /**
- * 删除当前用户
- * @param connection
- * @return
- */
- public static boolean deleteAccount(XMPPConnection connection)
- {
- try {
- connection.getAccountManager().deleteAccount();
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- /**
- * 删除修改密码
- * @param connection
- * @return
- */
- public static boolean changePassword(XMPPConnection connection,String pwd)
- {
- try {
- connection.getAccountManager().changePassword(pwd);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
XMPP——Smack[1]连接、登陆及账户操作的更多相关文章
- Openfire XMPP Smack RTC IM 即时通讯 聊天 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- python通过SSH登陆linux并操作
使用python通过SSH登陆linux并操作 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的. 代码: > ...
- Android基于XMPP Smack openfire 开发的聊天室
Android基于XMPP Smack openfire 开发的聊天室(一)[会议服务.聊天室列表.加入] http://blog.csdn.net/lnb333666/article/details ...
- 自定义redis连接池(字典操作)
pool=redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000)conn=redis.Redis(connecti ...
- github上创建ssh连接多个账户
简单的说用两对ssh密钥来连接多个github账户,有的同学问:用一对连接多个账户行吗?答案是不行,因为密钥和你的账户邮箱关联了. 1.生成密钥. sshkey -t rsa -b 4096 -C & ...
- django 中连接mysql数据库的操作步骤
django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...
- git从安装到多账户操作一套搞定(二)多账户使用
作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述 GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版 ...
- 解决“与 Microsoft Exchange 的连接不可用,Outlook 必须联机或已连接才能完成此操作”
Microsoft Outlook 是一种用于发送和接收电子邮件的应用程序.由于其可靠性和各种使用类型,它在企业公司中非常受欢迎.Outlook 还可用于管理各种类型的个人数据,如日历约会.联系人.邮 ...
- Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
学习过程中大家都碰到过连接被断开的问题给困扰吧,下面教大家如何做到连接断开后,重新连接 首先要创建连接监听器,用来监听连接状态,这里我写了一个类 继承了ConnectionListener,重写了里面 ...
随机推荐
- linux中应用程序main函数中没有开辟进程的,它应该在那个进程中运行呢?
1.main函数是一个进程还是一个线程? 不知道你是用c创建的,还是用java创建的. 因为它们都是以main()做为入口开始运行的. 是一个线程,同时还是一个进程. 在现在的操作系统中,都是多线程的 ...
- Eclipse优化
未特别说明,以下均处理在Window->Preferences下 General列表下 Startup and Shutdown可以去掉一些不必要的启动项 怎样才能知道哪些启动项有用呢?我现在把 ...
- innodb 间隙锁
innodb 间隙锁, 参考 MySQLInnoDB锁机制(二) 针对于辅助索引,也称范围索引 间隙锁只会出现在辅助索引上,唯一索引和主键索引是没有间隙锁.间隙锁(无论是S还是X)只会阻塞insert ...
- 深入理解Java虚拟机 - 垃圾收集算法与垃圾收集器
1. 垃圾收集算法 JVM的垃圾收集算法在不同的JVM实现中有所不同,且在平时工作中一般不会深入到收集算法,因此只对算法做较为简单的介绍. 1.1 标记-清除算法 ...
- BZOJ_2754__[SCOI2012]_喵星球上的点名_(暴力+后缀数组)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2754 给出n个姓名串和m个点名串.求每个点名串在多少人的姓名中出现过(在名中出现或在姓中出现, ...
- Java中的volatile
关于volatile 在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的.而随着JVM的成熟和优化,现在在多线程环境下 volatile关键字的使用变得非常重要. ...
- Java [leetcode 35]Search Insert Position
题目描述: Given a sorted array and a target value, return the index if the target is found. If not, retu ...
- HDU 4394 Digital Square
Digital Square Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- visual studio 2012 update3
http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=39305
- POJ 2378-Tree Cutting(树形dp)
题意: n个节点的树,删除一个点,得到的最大联通分支大小不大于总节点数的一半,求这样点的集合 分析:和上题一样 #include <map> #include <set> #i ...