Неблокирующие сокеты
От: 00011011  
Дата: 12.03.21 12:59
Оценка:
Как лучше сделать неблокирующее чтение данных, приходящих по UDP?

общая идея — нужна некая функция read(), которая читает в буфер столько байт, сколько реально принято из сети, и возвращает это количество (включая 0 — если ничего не пришло).

1. использовать встроенную в winsock возможность
u_long mode = 1; // 1 to enable non-blocking socket
ioctlsocket(m_socketRecv, FIONBIO, &mode);

2. реализовать блокирующий сокет (который создается по умолчанию) в отдельном потоке и свой буфер (например циклический буфер с индексами чтения и записи), и сделать неблокирующее чтение принятых данных уже из этого буфера.

Как лучше? Какие преимущества и недостатки у обоих подходов?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.