import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
/**
* Chat prototype using smack as client library. Server side are supported by
* openfire.
*
* @author promise
* @date 2009-3-30
*
*/
public class FireChat {
public static XMPPConnection con;
public static Chat newChat;
public static ChatManager chatmanager;
public static void main(String[] args) throws InterruptedException {
// XMPPConnection.DEBUG_ENABLED = true;
try {
// Create a connection to server
ConnectionConfiguration config = new ConnectionConfiguration(
"localhost", 5222);
con = new XMPPConnection(config);
// connect and login with the username and pwd on server
con.connect();
con.login("admin", "123");
System.out.println("Authenticated = " + con.isAuthenticated());
// add a listener to receive all messages
addListener();
chatmanager = con.getChatManager();
newChat = chatmanager.createChat("zkp@10.25.101.159/spark",
new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("I'm sending: "
+ message.getBody());
}
});
newChat.sendMessage("hi");
} catch (XMPPException e) {
e.printStackTrace();
} finally {
//让线程休眠 然后再关闭连接
Thread.sleep(3600000);
con.disconnect();
}
}
private static void addListener() {
// just need Messages
PacketFilter filterMessage = new PacketTypeFilter(Message.class);
PacketListener myListener = new PacketListener() {
public void processPacket(Packet packet) {
System.out.println("From: " + packet.getFrom() + "\n");
System.out.println("Body: " + ((Message) packet).getBody());
// when receiving prc's Message, just say something else again
// and again, robot
try {
newChat.sendMessage("hi again");
} catch (XMPPException e) {
e.printStackTrace();
}
}
};
// register the listener to the connection
con.addPacketListener(myListener, filterMessage);
}
}
要提到的是,运行此程序必须先配置好openfire的服务器,然后把用户名等写对!
分享到:
相关推荐
本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行交互。Smack简化了与XMPP服务器的通信,提供了丰富的API来处理用户认证、会话管理、消息发送和接收、以及用户状态等。 ...
在这个例子中,"localhost"代表服务器的地址,如果是本地运行,通常使用"localhost"。 2. **基于配置连接**: ```java ConnectionConfiguration config = new ConnectionConfiguration(); config....
这个"聊天小例子xmppdemo"很可能是用来演示如何使用XMPP协议创建一个简单的聊天应用。在这个压缩包文件中,XmppDemo可能是源代码或者一个可执行文件,用于展示XMPP的基本功能。 XMPP最初设计时是为了替换早期的...
在这个例子中,"org.jivesoftware.smack.im"很可能表示Smack IM的核心包,包含了处理IM功能的类和接口。 在Smack IM的源代码中,开发者可以期待找到以下关键知识点: 1. **XMPP协议实现**:Smack实现了XMPP协议的...
### 即时通讯简单的例子——基于XMPP的开发实例解析 #### 一、XMPP简介与应用场景 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,最初由Jabber发展而来,目前已成为国际标准之...
ChatDemo例子是一个基于XMPP协议实现的简单聊天应用程序的示例。XMPP(Extensible Messaging and Presence Protocol,可扩展消息传递和存在协议)是一种实时通信协议,广泛用于即时消息、语音和视频通话、群聊以及...
SmackTest是一个专注于测试和调试Android应用的框架,它提供了丰富的功能来帮助开发者高效地进行应用的质量保证。本文将深入探讨SmackTest的核心概念、主要功能以及如何在实际项目中运用它来提升测试效率。...
【ReactJS + Firebase聊天应用程序构建】 ReactJS是Facebook开发的一款流行的JavaScript库,专门用于构建用户界面...这个项目涵盖了前端框架、用户认证、实时数据交换等多个IT知识点,是学习和实践全栈开发的好例子。
这可能是一个桌面应用,如Pidgin或Spark,也可能是一个移动端应用,如Smack库用于Android,或者SwiftXMPP库用于iOS。 2. **连接与认证**:客户端首先需要与Openfire服务器建立连接,并进行身份验证。这通常涉及...
smack.tar 是一个native server 的例子 native_service.tar 是一个apk,验证native server。 http://blog.csdn.net/xiayu98020214/article/details/8895567
3. **asmack库**:asmack是Android平台上针对XMPP的轻量级库,它是Smack库的一个分支,专门针对Android优化。asmack允许Android应用与XMPP服务器进行通信,包括连接、登录、发送和接收消息、处理在线状态等。由于...
asmack包是用于和openfile服务器通讯的,也是smack的封装jar包; qq表情最简单的实现; 类似qq聊天的列表以及背景; 实现类似qq侧边栏效果,并且可以多页面滑动,viewpage双层
在这个例子中,`PacketListener`可能用于接收和处理来自服务器的消息,而`MessageTypeFilter`则确保只接收特定类型的消息,比如文本消息。 `Message`类在Smack中表示XMPP消息包,它包含了消息的内容、目标和源等...
android 实现 xmpp协议,基于asmack包,能登陆gtalk服务器的简单例子 即时通讯相关的资料: android asmack 注册 登陆 聊天 多人聊天室 文件传输 ... ... ...smack 源码分析一(android上实现长连接) ...
常见的选择有Smack和XMPPTCPConnection。这些库可以帮助我们建立与XMPP服务器的连接,发送和接收消息,以及管理用户会话。 3. **连接管理**:Android应用需要处理网络连接的生命周期,包括在后台保持连接,当设备...
在这个例子中,我们看到的代码是基于Apache的Smack库,一个流行的Java库,用于处理XMPP连接和交互。 首先,我们有一个名为`XMPPClient`的Activity,它是Android应用中的一个基本组件,用于展示用户界面和处理用户...