Мой вопрос: Как, (с помощью select()) я могу узнать, подключен ли новый клиент на моем сервере? A не может просто использовать accept, потому что accept() блокирует ...Как узнать, подключен ли новый клиент к сокету с select()
Пример: У меня есть два клиента, установленных на fd user1 (fd = 4) и user2 (fd = 5). Таким образом, я использую выбрать, чтобы знать, кто пишет на сокете:
FD_ZERO(read_fds);
FD_SET(user1, read_fds);
FD_SET(user2, read_fds);
error = select(user2 + 1, read_fds, NULL, NULL, NULL);
if (FD_ISSET(user1, read_fds) == 1)
printf("user1 talks.\n");
...
Но я хочу знать, если новый пользователь подключается к серверу, что я могу сделать? меня попробовать:
FD_ZERO(read_fds);
FD_SET(user1, read_fds);
FD_SET(user2, read_fds);
FD_SET((user2 + 1), read_fds);
error = select(user2 + 2, read_fds, NULL, NULL, NULL);
if (FD_ISSET(users2 + 1) == 1)
{
printf("New user.\n");
accept(..., ...);
}
...
Но с этим кодом, выберите возвратного -1 каждый раз ...
раствор? ^^
Все в порядке! Спасибо. – Zat42