使用openfire服务器,在android上实现asmack登陆、状态监视、文本和文件传送。

    这是博主在csdn上的第一篇博客,好激动,有点小紧张,O(∩_∩)O哈哈~大笑

    好吧,直奔主题 :

    在openfire上新建两个用户,账号密码随便写,注意账号里面最好不要有@serviceHost的后缀,因为博主不是这样弄的,也不清楚。嘿嘿嘿~ 还有密码最好和账号一样,因为博主为了偷懒省去了输入密码。

    账号设置好了后,主要互相添加为好友,并设置为both。如图:


    登陆的时候你要输入账号为xxxx@serviceHost

    

    登陆后,输入对方的账号 xxxx@serviceHost点chat就可以给对方法信息了,支持离线消息。(PS:为什么要加serviceHost,博主认为是为了区别你在哪天服务器上登陆)

    状态查看有点纠结,就是你输入对方地址点chat后,才会监视对方的状态,如果对方已经在线,则不会亮绿灯,因为对方在线状态没有改变,对方下线上线后就会亮了。有点纠结。这就不上图了。。

   文件传输也要先输入xxxx@serviceHost/Resource,请注意必须这里不许要输入Resource,因为我在后面给自动加了"/Smack",为什么要有Resource,这是用来区分你要发送的文件是传到那台设备上。去这个路径找传来的文件。



在学习过程中,博主碰到了很多问题:

问题1:在登陆后sendPresence()的时候设置Presence.Type.availebal、Presence.Mode.availebal,自己状态改变对方监听到时,就是roster.getPresence(user@serviceHost)得到的Mode是null,你没看错确实是null。但是,注意但是为设置为chat的就能得到Mode为chat。

问题2:博主折腾文件传输3天,上网搜各种解决办法,都不行。只能自己硬着头皮看源码,发现可能和Socks5Proxy设置有关系,顺藤摸瓜,偶然间发现了SmackAndroid.init(context)方法,天哪,就这么一句代码就吧文件传输501错误给解决了。看了init里面的代码,也就是添加了4句关于ibb的配置代码。虽然解决了文件传输,但是还是无法使用byteStreams协议来传输文件,from端host=127.0.0.1 to端则是host=null,可能和代理有关。


欢迎大家加群330112289来一起讨论和学习。 大笑


资源地址:点击打开链接

分要的有点高,防止伸手党~~


330112289330112289330112289


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值