你能在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?
如果是怎么办?
请注意,我知道您可以改用计时器,但我想特别了解这些套接字选项。
最佳答案
当然! Boost ASIO 允许您访问 native /底层数据,在本例中是 SOCKET 本身。那么,假设您有:
boost::asio::ip::tcp::socket my_socket;
假设您已经调用了 open
或 bind
或一些实际上使 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/