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

2014-11-24 11:47:12 · 作者: · 浏览: 23
环境准备:
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;
/**
*
*
*

* Description: 示例 业务类
*

*
*

* Copyright: Copyright (c) 2012
*

*
*
* @author dml@2013-2-21
* @version 1.0
*/ www.2cto.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 getRosterList(String username, String pass)
throws XMPPException {
Connection con = IMServer.getConnection();
con.connect();
con.login(username, pass);
Collection rosters = con.getRoster().getEntries();
for (RosterEntry rosterEnt