Это прототип оператора select (согласно страницам руководства):
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout);
Я знаю, для чего использовать параметр readfds: с этим вы можете видеть, были ли данные записаны в один из ваших сокетов. С другой стороны, на странице writefds, которую я обнаружил, говорится, что нужно посмотреть, «готов ли какой-либо из сокетов отправлять данные () в». Но что это значит? В сетевом программировании Windows Sockets Куином и Шутом говорится, что он обнаруживает подключенное или доступное для записи состояние. Какой в этом смысл? Неужели просто проверить, есть ли у сокета соединение с подключенным клиентом, и проверить, имеет ли смысл что-то записывать в этот сокет?
Итак: для чего обычно используют writefds?