openfire+smack 简单的 发送消息 demo及各种错误解决方案_解决问题最简单的方法
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 MeageListener(){
@Override
public void proceMeage(Chat chat,Meage meage){
String meageBody = meage.getBody();
System.out.println(“收到信息:” +meageBody+“ ”+meage.getFrom());
}
});
System.out.println(“我的好友列表:=======================”);
Collection 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.sendMeage(“fuck!”);//发送信息
conn.disconnect();//断开连接
System.out.println(“finish”);
}catch(Exception e){
System.out.println(“wrong”);
}
}
用户的JID一定要写对,如果不知道你自己的域是啥,可以通过roster.getUser()来获取某个
好友的JID
不然在发送信息的时候,会出现这个错误,openfire很废物,很多错都报这个
remote-server-not-found,很没有参考性。
3Fpv00
域这个东西,其实就是个安全性高级点的工作组,openfire好像会自动建立一个域,域名
与时间有关。
不要忘记关闭,connection。
最后,登陆spark等待接受信息,运行工程,就会成功收到信息啦。