openfire+smack 简单的 发送消息 demo及各种错误解决方案。

昨天搭建好了,,openfire准备用写一个smack写一个发送消息的demo,为了方便接收端使用Spark。

使用eclipse的同学注意,创建项目时注意要吧smack与smackx两个包都导进来,只导入smack的话会出现一个stream:error (conflict)

的错误,smackx中包含一些xml转java流的类。

运行项目时,如果端口被占用的话会出现一个

couldn’t setup local SOCKS5 proxy on port 7777

的错误,只需要找到smack里的config.xml在其中把端口改掉就可以。

解决了这两个问题,项目大概可以运行了。发送端代码如下

public static void main(String[] main){XMPPConnection.DEBUG_ENABLED=true; //开启调试XMPPConnection conn = new XMPPConnection("127.0.0.1"); //这里是服务器的地址,在本机上搭建openfire的话用127.0.0.1就可以try{conn.connect();conn.login("wyl091256", "nihaoa"); //发送端的用户名密码Chat mychat=conn.getChatManager().createChat("wyl@20110710-2249", //接收端的JID,这个JID是要加域的,不然会报错 new MessageListener(){@Overridepublic void processMessage(Chat chat,Message message){String messageBody = message.getBody(); System.out.println("收到信息:" +messageBody+" "+message.getFrom());}});System.out.println("我的好友列表:=======================" ); Collection<RosterEntry> rosters = conn.getRoster().getEntries(); for (RosterEntry rosterEntry : rosters){ System.out.print("name: " +rosterEntry.getName()+ ",jid: " +rosterEntry.getUser()); //此处可获取用户JID System.out.println("" ); } System.out.println("我的好友列表:=======================" ); mychat.sendMessage("fuck!"); //发送信息conn.disconnect(); //断开连接System.out.println("finish");}catch(Exception e){System.out.println("wrong");}}

用户的JID一定要写对,如果不知道你自己的域是啥,可以通过roster.getUser()来获取某个好友的JID

不然在发送信息的时候,会出现这个错误,openfire很废物,很多错都报这个remote-server-not-found,很没有参考性。

<message id="w5Cne-4" to="wyl091256@20110710-2249/Smack" from="wyl"type="error"><thread>3Fpv00</thread><error code="404" type="CANCEL"><remote-server-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></message>

域这个东西,其实就是个安全性高级点的工作组,openfire好像会自动建立一个域,域名与时间有关。

不要忘记关闭,connection。

最后,登陆spark等待接受信息,运行工程,就会成功收到信息啦。

天才是百分之一的灵感加上百分之九十九的努力

openfire+smack 简单的 发送消息 demo及各种错误解决方案。

相关文章:

你感兴趣的文章:

标签云: