Ali*_*deh 6 c++ sockets linux select
我正在将一个Windows网络应用程序移植到Linux,并在linux上选择调用时遇到超时问题.以下函数阻止整个超时值,并在我检查客户端已发送数据的数据包嗅探器时返回.
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);
}
Run Code Online (Sandbox Code Playgroud)
epa*_*tel 13
我认为select()
应该是第一个参数socket+1
.
你真的应该使用另一个名字,因为它socket
也用于其他事情.通常sock
是使用.