iOS中的BSD套接字和超时

时间:2012-01-27 03:01:34

标签: iphone ios ipad sockets unix

我设置了这样的套接字选项:

struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 0;
if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) == -1) {
    perror("setsockopt");
    exit(1);
}

当我这样做时,套接字会在recv调用时永久阻塞,但是当我将tv_usec设置为1时,套接字超时就像预期的那样。这是预期的行为吗?理解这一点的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

来自官方POSIX.1 manual page

  

此选项的默认值为零,表示接收操作不会超时。

因此,如果您将超时设置为零,则它将与默认值相同,即无超时。