Android Ndk中缺少SO_KEEPINTVL或SO_KEEPCNT定义(用于TCP KeepAlive)
Missing SO_KEEPINTVL or SO_KEEPCNT defines in Android Ndk (for TCP KeepAlive)
我正在尝试设置TCP Keep Alive Socket选项并使用NDK调整其一些值,在这一点上,我认为NDK版本是无关紧要的。
相关代码是c++,从类中的方法调用,如下所示:
// Assume the socket handle is valid and was created with socket()
// Enable TCP Keep Alive
int nOptVal = 1;
setsockopt(hSocket, SOL_SOCKET, SO_KEEPALIVE, reinterpret_cast<char*>(&nOptVal), sizeof(nOptVal));
// Every 15 secs.
nOptVal = 15;
setsockopt(hSocket, SOL_TCP, SO_KEEPINTVL, reinterpret_cast<char*>(&nOptVal), sizeof(nOptVal));
// Send a single probe
nOptVal = 1;
setsockopt(hSocket, SOL_TCP, SO_KEEPCNT, reinterpret_cast<char*>(&nOptVal), sizeof(nOptVal));
当我尝试编译上面的代码时,SO_KEEPINTVL
和SO_KEEPCNT
宏找不到,我似乎无法在NDK的包含文件中找到它们的定义。
有人做过这样的工作吗?
最后一点,我不能从java代码中做到这一点,因为需要在java代码正在使用的库中的套接字上设置选项。
我看了SO,发现了这个问题,它解释了如何在Java中做到这一点,所以我想这应该是可能的。
谢谢你的帮助。
综上所述,正确的宏名是TCP_KEEPINTVL
和TCP_KEEPCNT
。它们在linux/tcp.h
文件中定义。
相关文章:
- 'dlopen''ing 包含符号的 .so 会导致未定义的符号
- 链接器错误:在包含 .so lib 后未定义对 xxx 的引用
- 自定义 Python 构建 - time.so:未定义的符号:PyExc_ValueError
- C++调用lua_dostring来加载具有"require('cjson')"的Lua Scrip引发错误:cjson.so:未定义的符号:lua_getfield
- 错误libc++.so:未定义对"_Unwind_GetRegionStart"的引用
- gmp 的 libgmp.so 有哪些依赖关系?我不断收到未定义的引用
- g++ 未定义的引用,尽管符号存在于 *.so 文件中
- 部署后的Linux qt应用程序-符号查找错误:libQt5Core.so.5未定义的符号:uncv_getDefaul
- 与.so在G 中的链接导致未定义的参考
- ./libmylib.so:未定义的"submarinex::LIB::kCount"
- 链接错误与 libfpx.so:未定义的引用
- 在Python脚本中加载.SO文件时未定义的符号错误
- ImportError: /usr/lib/libboost_python.so.1.54.0: 未定义的符号: PyC
- libQt5Core.so:未定义对“__cxa_throw_bad_array_new_length@CXXABI_1
- 对符号'BIO_ctrl@@libcrypto.so.10'的未定义引用
- 在.so内部定义的extern变量和可执行引线执行未定义的行为
- so中未定义的符号(在链接对象中定义)
- Fortran 到 C 库的链接器错误 - /usr/lib/libf2c.so:对'MAIN__'的未定义引用
- 解析来自 dll(so)的C++未定义的引用
- .build_release/lib/libcaffe.so:未定义对'boost::p ython::import(boost::p ython::str)'的引用