首页 > iOS开发 如何跨系统传输文件 如:茄子快传、快牙

iOS开发 如何跨系统传输文件 如:茄子快传、快牙

最近需要做个APP,要实现iOS和Android数据互通(传输文件),实在没有头绪,希望有经验的前辈能给点提示,谢谢.


你好Italic text


0.分析

不管是不是跨平台,利用网络来传输数据,必须先规定好链接方式(网络)和通讯方式(协议)。
按照现在的应用场景,分析,其实需要实现的是一个点对点(P2P)交换数据的功能: 网络发现(两个设备相互找到对方)和文件传输
其实网络通讯传输数据的功能,设计好以后,不管是iOS对Android传输,还是iOS对iOS传输,甚至Android对Android传输,都可以使用一样的技术方案实现,所以不需要强调iOS传输文件给Android。

1.选择链接方式:

iOS和Android上都具备的链接能力,一个是Wifi,一个是蓝牙,还有一个是通讯卡流量。
蓝牙速率太低,传输文件的话一般不推荐选用;流量卡就更不用说了,不但需要服务器中转数据,用户还可能话费高额的流量费!剩下的最高速,方便的方式就是Wifi了。但是实际项目中还得按照需求去选择链接方式。

2.网络发现的基本思路:

我们都知道必须有IP地址才能进行网络通讯,那在网络中互相不知道IP地址的情况下怎么实现通讯呢?
答案是使用UDP的广播功能,他会向局域网中所有主机发送数据包。主机在收到UDP广播的数据包是,包内是附带了发送者的IP的,利用这个原理,就能实现网络发现功能:
所有客户端使用UDP的广播发送特定格式的消息A,消息中包含发送者的一些基本信息(如昵称、用户标示等)。定时发送消息A,对方通过判断规定时间内有没有收到下一个消息A来判断广播者有没有在线。
这样就实现了网络发现的功能了。

3.文件传输:

既然在一个局域网中,知道了对方的IP地址了,就可以给他传输文件了。
首先要做的是通知对方我要发送文件过去了,对方接受的话,就可以使用HTTP、FTP、等标准协议,或者自己定制一种协议来传输文件了。
文件传输需要实现两个部分,一个是发送部分,一个是接收部分,如果不考虑并发的情况,一个客户端同一个时间应该只执行发送部分或者只执行接收部分
1.A发送部分发送一个传输请求
2.B接收部分接收到文件传输请求,询问用户是否需要接收
3.如果B接受文件,A就发送文件数据给B(如果选用HTTP,那就应该是A讲文件下载链接发给B,由B主动下载)

end

里面细节太多就不再深入探讨,方式很多很灵活。上面我提到的实现思路也只是其中一种而已。方法总比问题多,大家一起努力!


同一个wifi环境下,可以由一个设备新建服务器(HTTP 或者别的),然后另外一个设备访问内网的这个服务。
或者走蓝牙

【热门文章】
【热门文章】