文件傳輸

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章