|
首先还是下载smack,我下载的是smack_3_2_0.tar。这个包里有四个jar文件。
首先创建一个java工程。创建一个lib文件夹,把这四个jar包放到lib中,添加到编译路径中。
目录接口如下:
创建一个TestSmack.java类。具体代码如下:
java代码:
package eoe.demo;
import org.jivesoftware.smack.ConnectionConfiguration;
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.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
public class TestSmack {
public static void main(String[] args) throws XMPPException {
ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
XMPPConnection connection = new XMPPConnection(config);
XMPPConnection.DEBUG_ENABLED = true;
connection.connect();
connection.login("admin", "admin");
// ChatManager chatManager = connection.getChatManager();
// chatManager.addChatListener(new ChatManagerListener(){
// @Override
// public void chatCreated(Chat chat, boolean arg1) {
// chat.addMessageListener(new MessageListener(){
// @Override
// public void proceSSMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
//
// }
// });
connection.addPacketListener(new PacketListener(){
@Override
public void processPacket(Packet arg0) {
System.out.println(arg0);
}
}, new PacketFilter(){
@Override
public boolean accept(Packet arg0) {
return true;
}
});
IQ iq = new IQ(){
@Override
public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
buf.append("");
return buf.toString();
}
};
connection.sendPacket(iq);
// Chat chat = chatManager.createChat("yangzc", new MessageListener(){
// @Override
// public void processMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
// chat.sendMessage("hello World!!!");
// BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
// for(;;) {
// try {
// String cmd = cmdIn.readLine();
// if("!q".equalsIgnoreCase(cmd)) {
// break;
// }
// chat.sendMessage(cmd);
// }catch(Exception ex) {
// }
// }
connection.disconnect();
System.exit(0);
}
}
总结:
这里比较关键的一句话时是:buf.append("");这句话指定了这个消息是发动到那个命名空间中。
只有发送到openfire插件对应的命名空间中openfire插件才可以正确接收。
至此openfire插件和smack的通信实现算是告一段落。剩下的工作就是xml了,不用说了吧,很简单的。 |
|