iPhone最大套接字缓冲区大小

iPhone最大套接字缓冲区大小,iphone,sockets,ios,tcp,Iphone,Sockets,Ios,Tcp,我试图找出iOS上最“优化”的套接字缓冲区大小,当我用sysctl查询KIPC_MAXSOCKBUF时,它返回4Mb的缓冲区大小,在我看来相当高。。。根据我的经验,当使用系统的“默认连续缓冲区大小”(这里是Unix的家伙!)时,socket recv的性能似乎更好,但是我无法在iOS上运行sysctl-a来获取该信息。。。它也不能通过sysctl的C接口使用(或者它是否有不同的名称?) 还有人测试过iOS上性能最好的recv套接字缓冲区大小吗?我认为是1024 KB(1 MB),但我不太确定。使

我试图找出iOS上最“优化”的套接字缓冲区大小,当我用sysctl查询KIPC_MAXSOCKBUF时,它返回4Mb的缓冲区大小,在我看来相当高。。。根据我的经验,当使用系统的“默认连续缓冲区大小”(这里是Unix的家伙!)时,socket recv的性能似乎更好,但是我无法在iOS上运行sysctl-a来获取该信息。。。它也不能通过sysctl的C接口使用(或者它是否有不同的名称?)

还有人测试过iOS上性能最好的recv套接字缓冲区大小吗?

我认为是1024 KB(1 MB),但我不太确定。使用MAC OS的getsockopt(2),SO_SNDBUF和SO_RCVBUF分别是调整正常缓冲区大小的选项。 对于大容量连接,可以增加缓冲区大小,或者 减少以限制传入数据的可能积压。系统 对这些值设置绝对限制


更多信息可以在

上找到,我不确定是否有一个最佳尺码。一般来说,无论平台如何,它都可能因应用程序(您的代码)而异。此外,使用中的硬件(各种蜂窝、WiFi,甚至在不常见的情况下使用以太网)似乎也很重要

此外,根据我刚刚在macOS上运行的一些实验,SO_RCVBUF的值在读取后似乎会发生变化(从~400K开始,我将其设置为10以测试具有较小缓冲区大小的代码,在第一次读取后它会跳回到~200K),因此系统可能正在进行一些经验分析,它认为这是在动态优化。(当然,iOS上的行为可能与macOS不同。)


是的,我回答老问题。那又怎么样?

从未测试过性能,但我通常使用1024KB(所以1MB)。但我想这个答案不是很有帮助P