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(){
@Override
public 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等待接受信息,运行工程,就会成功收到信息啦。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值