多线程套接字超时

Multithreading sockets timeout?

本文关键字:超时 套接字 多线程      更新时间:2023-10-16

我使用 c++11 线程库和套接字。我为每个套接字创建线程。

void connect_server(...)
{
    //here socket (stream client) stuff with connecting, receiving and sending data
}
int main()
{
    //...
    for (...)
        container.push_back(std::thread(connect_server, params));
    for (...)
        thread.join();
    //...
}

如何检查连接是否超时?

作为一个变体,你可以使用 setsockopt() 来设置超时值,使用 SO_SNDTIMEO SO_RCVTIMEO。当套接字在超时到期后解锁时,您可以向主进程发送信号,只需完成子线程或其他任何内容即可。
这里有一个关于如何使用 select() 调用设置连接超时的小片段。