最近开发即时通讯中使用FTP文件上传下载。遇到很莫名问题。起初开发是在内网中使用也是使用FTPManage这个第三方没有出现任何问题。现在开发完毕后,将此即时通讯封装打包成SDK后,切换公网调试,发现文件上传下载一直报错 domain = 1, code = 49或者code = -1000,errormessage = unknow.很是莫名其妙,创建文件夹,删除文件夹又是正常的。
一开始认为是后台FTP服务器配置有问题去找后台,人家也是一脸懵逼,权限,模式 都是正常,结果来了一句,安卓 和web端都是好好的,那就是iOS的问题。不知道大家是不是经常听到这样的言语,我也不想争论,因为自己对于FTP了解不是透彻。花了半天时间查看各种相关资料,基本上没有相关报错解答,有解答也被我排除。有仔细研读TCP通讯资料,也找了几个GitHub上大家经常使用的FTP框架,仍然不行。通过FTP可能关键点进行一一排除,肯能最大问题是主动和被动模式上。网上的FTP框架都是主动模式,然后自己写了个被动模式的FTPdemo进行验证,最后发FTP链接正常,第一次握手返回的地址也正常,然而第二次握手拿到的地址不正常,一看我就猜测到了,这个就是阿里云的内置地址。好嘛,终于找到问题所在。
那么最后直接在阿里云FTP服务器的监听器中设置下就好了,不然三次握手FTP拿到的就是一个内网地址。可能有些公司设置的服务器是由于多个路由端口进行多次转发导致的。此时只需要去掉中间的就行。本人是因为平时对于FTP接触不多,所以花了大量力气重新研读学习一一排查原因。希望能够对遇到这类问题的朋友起到帮助作用。如果有什么问题,可以留言相互探讨学习。
网友评论