当前位置:编程学习 > JAVA >>

基于Openfire消息服务器应用Smack发送即时消息源码示例

环境准备:
1.安装openfire服务器,进行相关项配置
2.工程中引入smack*.jar包
 
源码如下:
[java]  
package com.xjtu.jointframe.im.util;  
  
import java.util.ArrayList;  
import java.util.Collection;  
import java.util.Iterator;  
import java.util.List;  
  
import org.jivesoftware.smack.Chat;  
import org.jivesoftware.smack.Connection;  
import org.jivesoftware.smack.ConnectionConfiguration;  
import org.jivesoftware.smack.MessageListener;  
import org.jivesoftware.smack.Roster;  
import org.jivesoftware.smack.RosterEntry;  
import org.jivesoftware.smack.XMPPConnection;  
import org.jivesoftware.smack.XMPPException;  
import org.jivesoftware.smack.packet.Message;  
  
/** 
 *  
 *  
 * <p> 
 * Description: 示例 业务类 
 * </p> 
 *  
 * <p> 
 * Copyright: Copyright (c) 2012 
 * </p> 
 *  
 *  
 * @author dml@2013-2-21 
 * @version 1.0 
 */  www.zzzyk.com
public class IMServer {  
    private static final String IP = "127.0.0.1";  
    private static final Integer DK = 5222;  
    private static Roster roster;  
  
    /** 
     * 获取连接 
     *  
     * @return connection 
     */  
    public static Connection getConnection() {  
        ConnectionConfiguration config = new ConnectionConfiguration(IP, DK);  
        Connection connection = new XMPPConnection(config);  
        return connection;  
    }  
  
    /** 
     * 发送通知消息 
     *  
     * @param username 
     * @param pass 
     * @param messgage 
     * @param groupName 
     * @throws XMPPException 
     */  
    public void SendBCMsg(String username, String pass, String messgage,  
            String groupName) throws XMPPException {  
        Connection con = IMServer.getConnection();  
        con.connect();  
        con.login(username, pass);  
        Message m = new Message();  
        m.setBody(messgage);// 设置消息。  
        m.setTo(groupName + "@broadcast.xjtu");// [groupname]@[serviceName].[serverName]  
        con.sendPacket(m);  
    }  
  
    /** 
     * 发送即时消息 
     *  
     * @param username 
     * @param pass 
     * @param messgage 
     * @throws XMPPException 
     */  
    public void SendMsg(String username, String pass, String messgage)  
            throws XMPPException {  
        Connection con = IMServer.getConnection();  
        con.connect();  
        con.login(username, pass);  
        Chat mychat = con.getChatManager().createChat("admin@xjtu", // 接收端的JID,JID是要加域的  
                new MessageListener() {  
                    @Override  
                    public void processMessage(Chat chat, Message message) {  
                        String messageBody = message.getBody();  
                        System.out.println("收到信息:" + messageBody + " "  
                                + message.getFrom());  
                    }  
                });  
        mychat.sendMessage(messgage); // 发送信息  
        con.disconnect(); // 断开连接  
    }  
  
    /** 
     * 获取好友列表 
     *  
     * @param username 
     * @param pass 
     * @return 
     * @throws XMPPException 
     */  
    public List<RosterEntry> getRosterList(String username, String pass)  
            throws XMPPException {  
        Connection con = IMServer.getConnection();  
        con.connect();  
        con.login(username, pass);  
        Collection<RosterEntry> rosters = con.getRoster().getEntries();  
        for (RosterEntry rosterEntry : rosters) {  
            System.out.print("name: " + rosterEntry.getName() + ",jid: "  
                    + rosterEntry.getUser()); // 此处可获取用户JID  
            System.out.println("");  
        }  
        return null;  
    }  
  
    /** 
     * 获取用户列表(含组信息) 
     *  
     * @param username 
     * @param pass 
     * @return 
     * @throws XMPPException 
     */  
    public List<RosterEntry> getRoster(String username, String pass)  
            throws XMPPException { &
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,