BSD сокеты и таймауты в iOS - PullRequest
       1

BSD сокеты и таймауты в iOS

2 голосов
/ 27 января 2012

Я настраиваю опцию сокета следующим образом:

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 Ответ

3 голосов
/ 27 января 2012

С официальной страницы руководства POSIX.1 :

Значением по умолчанию для этой опции является нулевое значение, которое указывает на то, что операция приема не прекратит работу.*

Так что если вы установите тайм-аут на ноль самостоятельно, он будет таким же, как и по умолчанию, который не является тайм-аутом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...