ios 与服务器传递文件,iOS开发 如何跨系统传输文件 如:茄子快传、快牙

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值