临毕业前,应需求,花了三天写了个小的聊天工具,貌似简陋得很….若有机会再完善吧,目前毕业季,处理毕业事宜,还要准备即将的入职。

眼瞅着大学四年就这么结束了,哎。

开始吧,四篇博文简单介绍下基本实现,由于时间有限,功能不是十分丰富,有兴趣的同学自己研究下协议和具体的实现

需求:

基于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();

实现的方法

  1. public static XMPPConnection getConnection(String domain) throws XMPPException {
  2. XMPPConnection connection = new XMPPConnection(domain);
  3. connection.connect();
  4. return connection;
  5. }
  6. public static XMPPConnection getConnection(String domain,int port) throws XMPPException {
  7. ConnectionConfiguration config = new ConnectionConfiguration(domain,port);
  8. XMPPConnection connection = new XMPPConnection(config);
  9. connection.connect();
  10. return connection;
  11. }

断开

connection.disconnect();

四、登陆

connection.login("javatest2011@gmail.com", "*****");

五、账户操作

可以对账户进行基本操作,包括注册,注销,修改密码

  1. /**
  2. * 注册用户
  3. * @param connection
  4. * @param regUserName
  5. * @param regUserPwd
  6. * @return
  7. */
  8. public static boolean createAccount(XMPPConnection connection,String regUserName,String regUserPwd)
  9. {
  10. try {
  11. connection.getAccountManager().createAccount(regUserName, regUserPwd);
  12. return true;
  13. } catch (Exception e) {
  14. return false;
  15. }
  16. }
  17. /**
  18. * 删除当前用户
  19. * @param connection
  20. * @return
  21. */
  22. public static boolean deleteAccount(XMPPConnection connection)
  23. {
  24. try {
  25. connection.getAccountManager().deleteAccount();
  26. return true;
  27. } catch (Exception e) {
  28. return false;
  29. }
  30. }
  31. /**
  32. * 删除修改密码
  33. * @param connection
  34. * @return
  35. */
  36. public static boolean changePassword(XMPPConnection connection,String pwd)
  37. {
  38. try {
  39. connection.getAccountManager().changePassword(pwd);
  40. return true;
  41. } catch (Exception e) {
  42. return false;
  43. }
  44. }

XMPP——Smack[1]连接、登陆及账户操作的更多相关文章

  1. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. python通过SSH登陆linux并操作

    使用python通过SSH登陆linux并操作 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的. 代码: > ...

  3. Android基于XMPP Smack openfire 开发的聊天室

    Android基于XMPP Smack openfire 开发的聊天室(一)[会议服务.聊天室列表.加入] http://blog.csdn.net/lnb333666/article/details ...

  4. 自定义redis连接池(字典操作)

    pool=redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000)conn=redis.Redis(connecti ...

  5. github上创建ssh连接多个账户

    简单的说用两对ssh密钥来连接多个github账户,有的同学问:用一对连接多个账户行吗?答案是不行,因为密钥和你的账户邮箱关联了. 1.生成密钥. sshkey -t rsa -b 4096 -C & ...

  6. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  7. git从安装到多账户操作一套搞定(二)多账户使用

    作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述     GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版 ...

  8. 解决“与 Microsoft Exchange 的连接不可用,Outlook 必须联机或已连接才能完成此操作”

    Microsoft Outlook 是一种用于发送和接收电子邮件的应用程序.由于其可靠性和各种使用类型,它在企业公司中非常受欢迎.Outlook 还可用于管理各种类型的个人数据,如日历约会.联系人.邮 ...

  9. Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连

    学习过程中大家都碰到过连接被断开的问题给困扰吧,下面教大家如何做到连接断开后,重新连接 首先要创建连接监听器,用来监听连接状态,这里我写了一个类 继承了ConnectionListener,重写了里面 ...

随机推荐

  1. day 2014-04-13

    crystal 10:00:40 米多爸爸 11:51:47 很滋润嘛.一般有送股题材的股票都会在送股消息公告之前炒上一阵子,真到了题材兑现就涨不动了,也有些会在除权后走一波填权行情.现在不是牛市,后 ...

  2. android下升级软件介绍

    编译android: 生成:system.img,ramdisk.img,userdata.img映像文件. ramdisk.img是emulator的文件系统 system.img包括了主要的包.库 ...

  3. MarkupExtension的使用

    记得第一次看到MarkupExtension是在几年前的一次面试中.很不好意思说,当时不知道是什么东东.最近在项目中又用到了WPF的这个功能,决定在博客里记录一下. 在Xaml中为某个对象以Attri ...

  4. 史上最全面的FRM与CFA的区别对比分析,适合新人看

    简单地自我介绍:本人于纽约完成了研究生阶段的学习后,在华尔街混迹了几年的时间,已获取FRM证书,正在积极准备CFA. 上海财经大学FRM培训中心前言导读 经常看到CFA持证人平均年收入为$XXX之类的 ...

  5. 函数 buf_block_init

    /********************************************************************//** Initializes a buffer contr ...

  6. linux aio

    前几天nginx的0.8.x正式成为stable,然后看了下代码,发现0.8加入了linux native aio的支持,我们知道在linux下有两种aio,一种是glibc实现的aio,这个比较烂, ...

  7. Repeater的ItemCommand事件(LinkButton)

    Repeater的ItemCommand事件,就是在里面加一个超链接的按钮,所有按钮都指向同一个事件,就是ItemCommand事件. 至于如何区分是点击的什么按钮,还有传的值,需要用到LinkBut ...

  8. poj2182

    首先容易知道,最后一个数是最容易确定的,于是从后往前确定 对于位置j,它的数就是1~n中剩余数的第a[j]+1小的数 这当然可以用平衡数做,复杂度为O(nlogn) 有没有更简洁得算法?树状数组+二分 ...

  9. 【转】Application.mk 文件语法规范

    原文网址:http://blog.sina.com.cn/s/blog_4c451e0e0100s6q4.html Application.mk file syntax specification A ...

  10. Hibernate4.x之映射关系--单向一对多

    在领域模型中,类与类之间最普遍的关系就是关联关系在UML中,关联是有方向的 以Customer和Order为例:一个用户能发出多个订单,而一个订单只能属于一个客户.从Order到Customer的关联 ...