首页 > 解决方案 > 使用 iOS 设置 TCP_QUICKACK

问题描述

我正在使用 MQTT 协议编写 iOS 聊天应用程序,并且正在使用https://github.com/flightonary/Moscapsule连接到代理服务。

现在我面临一个延迟问题,正如我所调查的那样,这是由于 Nagle 的算法和延迟 ACK(在此处描述http://www.stuartcheshire.org/papers/nagledelayedack/)。

到目前为止,我可以通过设置 TCP_NODELAY 选项来禁用 Nagle 算法。但是我无法设置 TCP_QUICKACK 选项,编译器抱怨“使用未声明的标识符 'TCP_QUICKACK' ”,我不知道如何解决。

有人可以帮忙吗?

标签: iossocketslatency

解决方案


不幸的是,TCP_QUICKACK 不适用于 iOS。

https://forums.developer.apple.com/thread/116340

TCP_QUICKACK 在 iOS 上不可用。如果您希望将来添加此类支持,我鼓励您提交描述您的要求的增强请求。

PS:BSD Sockets 被认为是 iOS 上的一种兼容性 API,我们鼓励人们使用 Network 框架进行底层网络。像这样的增强可能会出现在那里,然后仅在绝对必要时才移植到 BSD 套接字 API。

从好的方面来说,从 Swift 调用 Network 框架要好得多。


推荐阅读