Udp выберите проблемы с таймаутом. Либо тайм-аут, либо чтение со всех клиентовC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Udp выберите проблемы с таймаутом. Либо тайм-аут, либо чтение со всех клиентов

Сообщение Anonymous »

Я использую select для обработки соединений на udp-сервере. Если я не получу пакет в течение некоторого периода времени, я хотел бы получить тайм-аут. Проблема в том, что, похоже, я могу либо правильно выполнить тайм-аут и читать только с одного клиента, либо читать со всех клиентов, но не тайм-аут.

Разница в этой функциональности связана с первым аргументом выбора — int nfds

Вот мой код:

Код: Выделить всё

int TIMEOUT = 5;
for (;;) {
FD_ZERO(&read_handles);
FD_SET(udpFD, &read_handles);

timeout.tv_sec = TIMEOUT;
timeout.tv_usec = 0;
if (select(udpFD+1, &read_handles, NULL, NULL, &timeout) == 0) {
printf("Select has timed out...\n");
return 1;
} else {
int length = 1;
if (FD_ISSET(udpFD, &read_handles)) {
//process read.
}
}
}
Эта версия не имеет тайм-аута. Если я изменю строку выбора на:

Код: Выделить всё

if(select(udpFD, &read_handles, NULL, NULL, &timeout) == 0)
У него истекает время ожидания, но он получает данные только от одного из моих клиентов.

udpFD — единственный дескриптор, на который я смотрю, но он имеет значение 4, потому что это не первый дескриптор, который я создал. Я не знаю, имеет ли это значение, поскольку это максимальное значение.

Как я могу одновременно истечь тайм-аутом и получить данные от обоих моих клиентов?

Подробнее здесь: https://stackoverflow.com/questions/227 ... ll-clients
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Вызывает ли сбой тайм-аут сторожевого таймера или тайм-аут является результатом сбоя?
    Anonymous » » в форуме Linux
    0 Ответы
    154 Просмотры
    Последнее сообщение Anonymous
  • Тайм-аут вызова API и тайм-аут попытки вызова API dynamodb
    Anonymous » » в форуме JAVA
    0 Ответы
    121 Просмотры
    Последнее сообщение Anonymous
  • Установите тайм-аут Quarkus Rest-Client для разных клиентов отдыха
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Установите тайм-аут Quarkus Rest-Client для разных клиентов отдыха
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Win32 – чтение со стандартного ввода с таймаутом
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»