Android上的TCP快速打开

时间:2015-12-15 16:23:38

标签: android c linux tcp android-ndk

有没有人成功在Android上使用TCP Fast Open Option?

我在Android NDK C程序中使用此代码:

sfd = socket(AF_INET, SOCK_STREAM, 0); sendto(sfd, data, data_len, MSG_FASTOPEN, (struct sockaddr *) &server_addr, addr_len);

建议http://lwn.net/Articles/508865/

它在Linux和Android上编译都很好。

它在Linux上运行完美,但在Android上调用sendto()程序时会退出。

我在Android 4. *和5.1(设备)上尝试过,甚至在Android 6(仅限现在的模拟器)上尝试过。

PS 我注意到在Android 4. *上/proc/sys/net/ipv4/没有tcp_fastopen文件,在Android 5.1上,该文件存在,但它包含0。

1 个答案:

答案 0 :(得分:2)

TCP快速开放需要Linux内核3.7+。首先检查内核版本。

这是AOSP中内核版本的a sheet。请注意,它可能代表您设备上的真实内核版本。

如果支持,则需要使用echo 3 > /proc/sys/net/ipv4/tcp_fastopen启用它。它需要root权限。