2013-10-15 53 views
0

我被要求構建應用程序的一部分,下載二進制數據並通過套接字將某些二進制數據發回服務器。原因是他們需要快速交易。如何通過iOS上的套接字下載和發佈二進制數據?

在過去,我只使用JSON/XML的Web服務。

有人能指出我需要學習執行這些功能的正確方向嗎?

感謝

回答

1

Developer.apple.com似乎目前處於關閉狀態,因此此鏈接可能並不完全正確,但簽出CFSocket用於Apple直接公開的TCP套接字功能。這些都是Core Foundation C的東西,但是最終會產生一系列相關的回調函數,每當事務進入時都會調用,並且有一個調用來發送數據的函數。

2

首先,做二進制過插座不保證「快如閃電」任何東西。您需要確保您發送的內容緊湊,並且可以在接收端快速處理。

這就是說,我建議使用協議緩衝區的數據。它結構緊湊,經過良好測試,易於在服務器和客戶端上處理:https://code.google.com/p/protobuf/。這將使您可以很好地定義您的.proto文件中的域對象,並在客戶端和服務器應用程序之間共享這些對象。甚至還支持使用protoc生成objective-c:https://code.google.com/p/metasyntactic/wiki/ProtocolBuffers。請注意,協議緩衝區本身實際上並不提供協議來使用套接字,但您可以使用一個非常簡單的協議,例如使用協議緩衝區的長度寫入4個字節,然後緊隨其後的協議緩衝區本身(https://developers.google.com/protocol-buffers/docs/techniques#streaming)。

就如何發送它而言,CocoaAsyncSocket是在iOS上編寫基於套接字的應用程序的好方法:https://github.com/robbiehanson/CocoaAsyncSocket。然後你的應用程序可以像構建protobuf對象一樣簡單,調用其上的data方法來提取NSData *表示形式,然後使用GCDAsyncSocketwriteData方法發送它。

接收將是相同的。當GCDAsyncSocket上的代理通知有數據可用時,請將其讀出並解析到協議緩衝區實例。

相關問題