`
alyouge
  • 浏览: 193671 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

smack 小例子

阅读更多

 

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的服务器,然后把用户名等写对!

 

 

 

 

 

分享到:
评论
4 楼 cx807839946 2013-10-12  
你是卖衣服的??
3 楼 wudasheng 2011-02-10  
能否给个真相
2 楼 wudasheng 2011-02-10  
javax.net.ssl.SSLKeyException: RSA premaster secret error
at com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.<init>(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:1127)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:313)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(DashoA13*..)
at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(Unknown Source)
... 13 more
java.lang.NullPointerException
at org.jivesoftware.smack.SASLAuthentication.send(SASLAuthentication.java:409)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:68)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:194)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:341)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:301)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:283)
at cn.wds.chat.FireChat.main(FireChat.java:38)
No response from the server.:
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:58)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:227)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:341)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:301)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:283)
at cn.wds.chat.FireChat.main(FireChat.java:38)

1 楼 wudasheng 2011-02-10  
你卖的衣服挺好看的》。。

相关推荐

    基于smack连接openfire服务器的例子-JAVA

    本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行交互。Smack简化了与XMPP服务器的通信,提供了丰富的API来处理用户认证、会话管理、消息发送和接收、以及用户状态等。 ...

    smack学习笔记

    在这个例子中,"localhost"代表服务器的地址,如果是本地运行,通常使用"localhost"。 2. **基于配置连接**: ```java ConnectionConfiguration config = new ConnectionConfiguration(); config....

    聊天小例子xmppdemo

    这个"聊天小例子xmppdemo"很可能是用来演示如何使用XMPP协议创建一个简单的聊天应用。在这个压缩包文件中,XmppDemo可能是源代码或者一个可执行文件,用于展示XMPP的基本功能。 XMPP最初设计时是为了替换早期的...

    smack-im-4.3.4-sources_www.im.43_im_

    在这个例子中,"org.jivesoftware.smack.im"很可能表示Smack IM的核心包,包含了处理IM功能的类和接口。 在Smack IM的源代码中,开发者可以期待找到以下关键知识点: 1. **XMPP协议实现**:Smack实现了XMPP协议的...

    即时通讯简单的例子

    ### 即时通讯简单的例子——基于XMPP的开发实例解析 #### 一、XMPP简介与应用场景 XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的即时通讯协议,最初由Jabber发展而来,目前已成为国际标准之...

    ChatDemo例子

    ChatDemo例子是一个基于XMPP协议实现的简单聊天应用程序的示例。XMPP(Extensible Messaging and Presence Protocol,可扩展消息传递和存在协议)是一种实时通信协议,广泛用于即时消息、语音和视频通话、群聊以及...

    SmackTest例子

    SmackTest是一个专注于测试和调试Android应用的框架,它提供了丰富的功能来帮助开发者高效地进行应用的质量保证。本文将深入探讨SmackTest的核心概念、主要功能以及如何在实际项目中运用它来提升测试效率。...

    Smack-Chat-1:用于聊天的ReactJS + Firebase应用程序

    【ReactJS + Firebase聊天应用程序构建】 ReactJS是Facebook开发的一款流行的JavaScript库,专门用于构建用户界面...这个项目涵盖了前端框架、用户认证、实时数据交换等多个IT知识点,是学习和实践全栈开发的好例子。

    im通讯例子

    这可能是一个桌面应用,如Pidgin或Spark,也可能是一个移动端应用,如Smack库用于Android,或者SwiftXMPP库用于iOS。 2. **连接与认证**:客户端首先需要与Openfire服务器建立连接,并进行身份验证。这通常涉及...

    native service例子

    smack.tar 是一个native server 的例子 native_service.tar 是一个apk,验证native server。 http://blog.csdn.net/xiayu98020214/article/details/8895567

    Android XMPP例子(Openfire+asmack+spark)

    3. **asmack库**:asmack是Android平台上针对XMPP的轻量级库,它是Smack库的一个分支,专门针对Android优化。asmack允许Android应用与XMPP服务器进行通信,包括连接、登录、发送和接收消息、处理在线状态等。由于...

    asmack简单例子以及qq表情简单原理

    asmack包是用于和openfile服务器通讯的,也是smack的封装jar包; qq表情最简单的实现; 类似qq聊天的列表以及背景; 实现类似qq侧边栏效果,并且可以多页面滑动,viewpage双层

    android平台即时通讯简单实现 源代码.docx

    在这个例子中,`PacketListener`可能用于接收和处理来自服务器的消息,而`MessageTypeFilter`则确保只接收特定类型的消息,比如文本消息。 `Message`类在Smack中表示XMPP消息包,它包含了消息的内容、目标和源等...

    android IM

    android 实现 xmpp协议,基于asmack包,能登陆gtalk服务器的简单例子 即时通讯相关的资料: android asmack 注册 登陆 聊天 多人聊天室 文件传输 ... ... ...smack 源码分析一(android上实现长连接) ...

    android消息推送

    常见的选择有Smack和XMPPTCPConnection。这些库可以帮助我们建立与XMPP服务器的连接,发送和接收消息,以及管理用户会话。 3. **连接管理**:Android应用需要处理网络连接的生命周期,包括在后台保持连接,当设备...

    android平台即时通讯简单实现_源代码.pdf

    在这个例子中,我们看到的代码是基于Apache的Smack库,一个流行的Java库,用于处理XMPP连接和交互。 首先,我们有一个名为`XMPPClient`的Activity,它是Android应用中的一个基本组件,用于展示用户界面和处理用户...

Global site tag (gtag.js) - Google Analytics