===============================================================
主动发送信息给某个用户
------------------------------------
XMPPConnection.DEBUG_ENABLED = true;
//设置服务器地址
XMPPConnection conn = new XMPPConnection("127.0.0.1");
conn.connect();
//输入账号和密码登陆
conn.login("test2@127.0.0.1", "123456");
//创建一个和test1的对话,并设置信息监听
Chat mychat = conn.getManager().create("test1@127.0.0.1",
new MessageListener() {
@Override
public void processMessage(Chat chat,, Message message) {
String messageBody = message.getBody();
System.out.println("收到信息:"+messageBody);
}
});
//发送给test1文本信息
mychat.sendMessage("hello");
//退出登陆
conn.disconnect();
===============================================================
设置自己的登陆状态
------------------------------------
XMPPConnection.DEBUG_ENABLED = true;
//设置服务器地址
XMPPConnection conn = new XMPPConnection("127.0.0.1");
conn.connect();
//输入账号和密码登陆
conn.login("test2@127.0.0.1", "123456");

//设置登陆后的个人状态信息
Presence p = new Presence(Presence.Type.available);
p.setStatus("发呆中。。。");
conn.sendPacket(p);

//退出登陆
conn.disconnect();
==========================================================================
被动接收用户发来的信息
------------------------------------
XMPPConnection.DEBUG_ENABLED = true;
//设置服务器地址
XMPPConnection conn = new XMPPConnection("127.0.0.1");
conn.connect();
//输入账号和密码登陆
conn.login("test1@127.0.0.1", "123456");
//设置信息的监听
conn.getChatManager().addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
System.out.println("接收到信息:"+messageBody);
}
});
}
});
//退出登陆
conn.disconnect();
==========================================================================
获取我的好友列表
------------------------------------
//设置服务器地址
XMPPConnection conn = new XMPPConnection("127.0.0.1");
conn.connect();
//输入账号和密码登陆
conn.login("test1@127.0.0.1", "123456");
Collection<RosterEntry> rosters = conn.getRoster().getEntries();
System.out.println("我的好友列表:=======================");
for(RosterEntry rosterEntry : rosters){
System.out.print("name: "+rosterEntry.getName()+",jid: "+rosterEntry.getUser());
System.out.println("");
}
System.out.println("我的好友列表:=======================");

conn.disconnect();
==========================================================================
聊天窗口输入状态,使用XEP-0085 协议
------------------------------------
//发送给test1初始文本信息,附带输入状态
Message mess = new Message();
mess.addExtension(new ChatStateExtension(ChatState.active));
mychat.sendMessage(mess);
//发送给test1初始文本信息,附带正在输入的状态
Message mess = new Message();
mess.addExtension(new ChatStateExtension(ChatState.composing));
mychat.sendMessage(mess);

//发送给test1初始文本信息,附带暂停输入的状态
Message mess = new Message();
mess.addExtension(new ChatStateExtension(ChatState.paused));
mychat.sendMessage(mess);
//其他略。。。

//接收的时候
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
PacketExtension pe;

pe = message.getExtension("composing","http://jabber.org/protocol/chatstates");
if(pe != null){
System.out.println("对方正在输入......");
}

pe = message.getExtension("active","http://jabber.org/protocol/chatstates");
if(pe != null){
System.out.println("接收到信息:"+messageBody);
}

pe = message.getExtension("paused","http://jabber.org/protocol/chatstates");
if(pe != null){
System.out.println("对方已暂停输入");
}

pe = message.getExtension("inactive","http://jabber.org/protocol/chatstates");
if(pe != null){
System.out.println("对方聊天窗口失去焦点");
}

pe = message.getExtension("gone","http://jabber.org/protocol/chatstates");
if(pe != null){
System.out.println("对方聊天窗口被关闭");
}
}
==========================================================================
接收邀请,加入多人聊天房间
------------------------------------
MultiUserChat.addInvitationListener(conn, new InvitationListener() {
@Override
public void invitationReceived(XMPPConnection conn, String room,
String inviter, String reason, String password, Message message) {
MultiUserChat multiUserChat = new MultiUserChat(conn, room);
System.out.println("收到来自 "+inviter+" 的聊天室邀请。邀请附带内容:"+reason);
try {
multiUserChat.join("test2", password);
} catch (XMPPException e) {
System.out.println("加入聊天室失败");
e.printStackTrace();
}
System.out.println("成功加入聊天室");
multiUserChat.addMessageListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
Message message = (Message)packet;
//接收来自聊天室的聊天信息
System.out.println(message.getFrom()+":"+message.getBody());
}
});
}
//发送信息到聊天室
multiUserChat.sendMessage("新手到来,大家关照!");
});

==========================================================================
登陆gtalk
------------------------------------
XMPPConnection conn = new XMPPConnection(new ConnectionConfiguration("talk.google.com", 5222, "gmail.com"));
conn.connect();
//输入gtalk的账号密码
conn.login("88888888", "8888888888");
Collection<RosterEntry> rosters = conn.getRoster().getEntries();
//获取gtalk上的好友列表
System.out.println("我的好友列表:=======================");
for(RosterEntry rosterEntry : rosters){
System.out.print("name: "+rosterEntry.getName()+",jid: "+rosterEntry.getUser());
System.out.println("");
}
System.out.println("我的好友列表:=======================");

conn.disconnect();
==========================================================================

smack api 转载未测试的更多相关文章

  1. HTC Vive前置摄像头API(未测试)

    /*WebCamTexture:网络摄像头材质 WebCamTexture.Play() 播放: WebCamTexture.Pause() 暂停: WebCamTexture.Stop() 停止:* ...

  2. 转载【微信支付】jsapi支付之传参问题(使用微信官方SDK之PHP版本) V3之WxpayPubHelper 亲测有效,V3WxpayAPI_php_v3.zip版未测试,理论上也是一样的。

    本文转载至:http://blog.csdn.net/geeklx/article/details/51146151 (微信支付现在分为v2版和v3版,2014年9月10号之前申请的为v2版,之后申请 ...

  3. C++ primer学习记录(个人猜想未测试版本)

    学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...

  4. 使用jMeter对基于SAP ID service进行Authentication的Restful API进行并发测试

    这篇文章本来Jerry只在SAP社区上写了英文版的,可以通过点击文末的"阅读原文"获得.后来有两位做Marketing Cloud开发的德国同事,写邮件询问关于文章的更多细节,声称 ...

  5. 利用eolinker实现api接口mock测试(mock server)

    转载:http://blog.csdn.net/naicha_qin/article/details/78276172 前后端分离或者是进行单元测试的时候,必须要用mock api替换掉第三方调用或者 ...

  6. consolel API大全-附测试结果

    f 简介: JS中默认没有console对象, 这是某些浏览器提供的浏览器内置对象, 低版本IE就没有, 其他主流浏览器应该都有.它能看到结构话的东西,如果是alert,淡出一个对象就是[object ...

  7. Web API 自动生成帮助文档并使用Web API Test Client 测试

    之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...

  8. [转载]Macaca 测试 Android 应用:UIAutomator

    在用macaca进行自动化测试,想试一下移动端测试,看到这篇文章,尝试一下. 前言 用 Macaca 可以快速.便捷地进行安卓 native 的自动化测试,用简洁的 js 语法,写下用例,然后执行 M ...

  9. Asp.net Web Api进行Nunit测试

    有两种方式 1.模拟Web请求. 2.直接本地调用Api接口 但是由于本地直接调用没有模拟请求环境,所以request为null public static HttpResponseMessage C ...

随机推荐

  1. UVA LIVE-4642 - Malfatti Circles

    给出三角形三个顶点,求出三个互切的圆的半径 尽管大白鼠说能够推出公式,但是这个公式仅仅怕没那么easy推--我左看右看上看下看也推不出. 应该是要做辅助线什么的,那也-- 因为非常easy就推出了关于 ...

  2. Oracle创建自增字段和修改方法-ORACLE SEQUENCE的简单介绍

    http://blog.csdn.net/zhoufoxcn/article/details/1762351先假设有这么一个表: create table S_Depart  (    DepartI ...

  3. eclipse中查看java源代码设置方法

    众所周知,第一次查看class文件时,eclipse会给个界面选择添加源代码路径.   但是,如果我要换源代码路径了怎么办,eclipse也不会提示了.那就使用手动的吧       方法1: 使用ec ...

  4. js 组合键监听ctrl + enter

    $(window).keydown(function (event) { // 监听esc键退出全屏 if (event.keyCode == 27) { } // 监听 Ctrl + Enter 可 ...

  5. HDFS源码分析心跳汇报之数据块增量汇报

    在<HDFS源码分析心跳汇报之BPServiceActor工作线程运行流程>一文中,我们详细了解了数据节点DataNode周期性发送心跳给名字节点NameNode的BPServiceAct ...

  6. kernel&uboot学习笔记

    uboot kernel uboot 1.Uboot编译流程分析: uboot是如何编译生成的? 2.根据include/configs/$(target).h可以生成include/autoconf ...

  7. Java多线程面试问题

    这篇文章主要是对多线程的面试问题进行总结的,罗列了40个多线程的问题. 1. 多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓 ...

  8. 在VMware下安装CentOS系列1:配置VMware

    安装环境 VMware Workstation v9.0.0 build-812388 CentOS-6.3-x86_64-minimal.iso minimal,bin-DVD,netinstall ...

  9. &lt;二代測序&gt; 下载 NCBI sra 文件

    本文近期更新地址: http://blog.csdn.net/tanzuozhev/article/details/51077222 随着測序技术的不断提高.二代測序数据成指数增长. NCBI提供了S ...

  10. 【Android】带底部指示的自定义ViewPager控件

    在项目中经常需要使用轮转广告的效果,在android-v4版本中提供的ViewPager是一个很好的工具,而一般我们使用Viewpager的时候,都会选择在底部有一排指示物指示当前显示的是哪一个pag ...