爱学习受.NET

www.icjyw.com 记录开发技术收藏天地
公告信息
www.icjyw.com 记录开发技术收藏天地
文章分类
文章档案
文章
Android smack和openfire通信方法
2011/8/1 23:49:20
首先还是下载smack,我下载的是smack_3_2_0.tar。这个包里有四个jar文件。
  首先创建一个java工程。创建一个lib文件夹,把这四个jar包放到lib中,添加到编译路径中。
  目录接口如下:

       创建一个TestSmack.java类。具体代码如下:

java代码:

  1. package eoe.demo;
  2. import org.jivesoftware.smack.ConnectionConfiguration;
  3. import org.jivesoftware.smack.PacketListener;
  4. import org.jivesoftware.smack.XMPPConnection;
  5. import org.jivesoftware.smack.XMPPException;
  6. import org.jivesoftware.smack.filter.PacketFilter;
  7. import org.jivesoftware.smack.packet.IQ;
  8. import org.jivesoftware.smack.packet.Packet;
  9. public class TestSmack {
  10. public static void main(String[] args) throws XMPPException {
  11. ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
  12. XMPPConnection connection = new XMPPConnection(config);
  13. XMPPConnection.DEBUG_ENABLED = true;
  14. connection.connect();
  15. connection.login("admin", "admin");
  16. // ChatManager chatManager = connection.getChatManager();
  17. // chatManager.addChatListener(new ChatManagerListener(){
  18. // @Override
  19. // public void chatCreated(Chat chat, boolean arg1) {
  20. // chat.addMessageListener(new MessageListener(){
  21. // @Override
  22. // public void processMessage(Chat arg0, Message arg1) {
  23. // System.out.println(arg1.getBody());
  24. // }
  25. // });
  26. //
  27. // }
  28. // });
  29. connection.addPacketListener(new PacketListener(){
  30. @Override
  31. public void processPacket(Packet arg0) {
  32. System.out.println(arg0);
  33. }
  34. }, new PacketFilter(){
  35. @Override
  36. public boolean accept(Packet arg0) {
  37. return true;
  38. }
  39. });
  40. IQ iq = new IQ(){
  41. @Override
  42. public String getChildElementXML() {
  43. StringBuilder buf = new StringBuilder();
  44. buf.append("");
  45. return buf.toString();
  46. }
  47. };
  48. connection.sendPacket(iq);
  49. // Chat chat = chatManager.createChat("yangzc", new MessageListener(){
  50. // @Override
  51. // public void processMessage(Chat arg0, Message arg1) {
  52. // System.out.println(arg1.getBody());
  53. // }
  54. // });
  55. // chat.sendMessage("hello World!!!");
  56. // BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
  57. // for(;;) {
  58. // try {
  59. // String cmd = cmdIn.readLine();
  60. // if("!q".equalsIgnoreCase(cmd)) {
  61. // break;
  62. // }
  63. // chat.sendMessage(cmd);
  64. // }catch(Exception ex) {
  65. // }
  66. // }
  67. connection.disconnect();
  68. System.exit(0);
  69. }
  70. }
复制代码


       总结:
  这里比较关键的一句话时是pdf:buf.append("");这句话指定了这个消息是发动到那个命名空间中。
  只有发送到openfire插件对应的命名空间中openfire插件才可以正确接收。
  至此openfire插件和smack的通信实现算是告一段落。剩下的工作就是xml了,不用说了吧,很简单的。

新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
 MyQBlog   浏览(4899)   评论(0)   关键字
  
Copyright © 2010-2020 power by CYQ.Blog - 秋色园 v2.0 All Rights Reserved