默认
发表评论 16
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
你的意思是说,你用ios写了一个AsyncSocket服务也写了一个AyncSocket服务端,然后用Protobuf格式,在局域网通信是正常的(编码和解码),对吧?
评论 16
那至少证明,你的ios端socket通信正常,使用profobuf编码和解析也是正常。

唯一的可能就是服务端,你们没有服务端程序员吗?netty服务端不要用它自已带的什么编解码器(netty官方文档是说它提供对protubuf的原生支持),直接对接收到的数据进行编码和解码,只把netty当数据收发通道就行,别赋予它们太多的逻辑,不然后面你要换方案怎么办,而且容易让问题不可控且复杂化
你的意思是android跟他那边的通信是正常的?
你跟他们核实一下android那边的情况:
因为android是用java语言实现,而netty是有java的客户端库的,你问下你的android同事:他是直接用的netty的客户端库来实现的,还是直接用纯tcp socket实现。

如果它客户端用的是netty的客户端库的话,那你解决问题起来就可能要麻烦一点了。
你android的同事真够懒得,这对你ios这边不公平,这意味着它们两边完全不用去理解编码和解的事,反正netty都解决,而你ios无法有这待遇。

可以这么去排查问题:让你服务端同事,先把protobuf关闭,用普通的2进制数据跟你ios这边通信,你ios这边也用普通的2进制,看看你Ios还能不能正常解析。 我之前在用mina做跨平台的时候,就是这样的:mina服务端封装好的东西ios 和纯socket实现的android端 收到的东西里会有几个字节的多余,而使得解析失败。你们试着去排查这个问题。

不过我上次写ios跟netty的服务端通信时,没有遇到不能解析的问题,http://www.52im.net/thread-378-1-1.html

你们两边好好调试,问题不一定出在你这边,你的同事真不给力
引用:zenghl 发表于 2017-02-06 17:07
我也遇到这个问题,谁能解决啊,妈蛋的,安卓搞定了,我搞了几个礼拜了

想办法让你服务端的同事跟你一起调试,这种异构平台的东西只能双方紧密联调才能找出真正原因所在。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部