gpt4 book ai didi

c++ - Socket select() 在 Windows 下有效,在 Linux 下超时

转载 作者:IT王子 更新时间:2023-10-29 01:02:41 25 4
gpt4 key购买 nike

我正在将一个 Windows 网络应用程序移植到 Linux,但在 Linux 上遇到了 select 调用的超时问题。当我用数据包嗅探器检查客户端已经发送数据时,以下函数会阻塞整个超时值并返回。

int recvTimeOutTCP( SOCKET socket, long sec, long usec )
{
struct timeval timeout;
fd_set fds;.

timeout.tv_sec = sec;
timeout.tv_usec = usec;
FD_ZERO( &fds );
FD_SET( socket, &fds );

// Possible return values:
// -1: error occurred
// 0: timed out
// > 0: data ready to be read
cerr << "Waiting on fd " << socket << endl;
return select(1, &fds, 0, 0, &timeout);
}

最佳答案

我认为 select() 的第一个参数应该是 socket+1

您真的应该使用另一个名称,因为 socket 也用于其他用途。通常使用sock

关于c++ - Socket select() 在 Windows 下有效,在 Linux 下超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com