有人要求我构建应用程序的一部分,用于下载二进制数据并通过套接字将某些二进制数据发回服务器。这样做的原因是他们需要闪电般快速的交易。
过去我只使用 JSON/XML 的网络服务。
有人可以指出我需要学习什么才能执行这些功能的正确方向吗?
谢谢
最佳答案
首先,通过套接字执行二进制操作并不能保证“快如闪电”。您需要确保发送的内容紧凑,并且可以在接收端快速处理。
也就是说,我建议对数据使用 Protocol Buffer 。它结构紧凑、经过良好测试并且易于在服务器和客户端上处理:https://code.google.com/p/protobuf/ .这将使您能够在 .proto 文件中很好地定义域对象,并在客户端和服务器应用程序之间共享这些对象。甚至支持使用协议(protocol)生成 objective-c:https://code.google.com/p/metasyntactic/wiki/ProtocolBuffers .请注意,protocol buffers 本身实际上并不提供通过套接字使用的协议(protocol),但您可以使用一个非常简单的协议(protocol),例如写入 4 个字节的 protocol buffer 的长度,然后紧随其后的是 protocol buffer 本身(https://developers.google.com/protocol-buffers/docs/techniques#streaming)。
就如何发送而言,CocoaAsyncSocket 是在 iOS 上编写基于套接字的应用程序的好方法:https://github.com/robbiehanson/CocoaAsyncSocket .然后你的应用程序可以像构建你的 protobuf 对象一样简单,调用 data
提取 NSData *
的方法表示,然后使用 GCDAsyncSocket
发送它的 writeData
方法。
接收也是一样的。当您的代表在 GCDAsyncSocket
被告知有数据可用,将其读出并将其解析到您的 Protocol Buffer 实例。
关于iphone - 如何通过 iOS 上的套接字下载和发布二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391857/