c++ - 您可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?

标签 c++ boost boost-asio

你能在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?

如果是怎么办?

请注意,我知道您可以改用计时器,但我想特别了解这些套接字选项。

最佳答案

当然! Boost ASIO 允许您访问 native /底层数据,在本例中是 SOCKET 本身。那么,假设您有:

boost::asio::ip::tcp::socket my_socket;

假设您已经调用了 openbind 或一些实际上使 my_socket 可用的成员函数。然后,要获取基础 SOCKET 值,请调用:

SOCKET native_sock = my_socket.native();
int result = SOCKET_ERROR;

if (INVALID_SOCKET != native_sock)
{
    result = setsockopt(native_sock, SOL_SOCKET, <the pertinent params you want to use>);
}

原来如此! Boost 的 ASIO 使您可以比其他方式更快地做很多事情,但是有很多事情您仍然需要调用普通的套接字库。这恰好是其中之一。

关于c++ - 您可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292997/

相关文章:

c++ - 为什么在 .h 文件中使用 #ifndef CLASS_H 和 #define CLASS_H 而不是在 .cpp 中?

c++ - Boost.Asio 设计的示例莫名其妙地阻塞

c++ - 添加 boost/asio 时未定义对 `boost::system::generic_category()' 的引用

c++ - boost::signals::scoped_connection 在 std::vector 中不起作用。为什么?

c++ - 线程完成后 boost::thread_group 永远挂起

c++ - 忽略零权重边的 Boost 图 BFS

crash - Boost asio 崩溃

c++ - 通用库是否包含任何普通用户无法编写的代码?

c++ - 在 C++ 类的函数内部声明变量

c++ - 我使用三种内存清除变体。他们都安全吗?我可以得到内存泄漏吗?