Ключевые слова:select, (найти похожие документы)
Date: Thu, 7 Feb 2002 07:17:23 +0000 (UTC)
From: "Evgeny G. Narumov" <[email protected]>
Newsgroups: fido7.ru.unix.prog
Subject: пример показывающий работу с сокетами через select()
> Ок, я понял, что можно с помощью select'a обрабатывать толпу сокетов, но тогда
> нужно заводить массив сокетов или как ?
> Можете привести маленький пример показывающий работу с select'ом ?
ioctlsocket(sockfd1, FIONBIO, &bTrue);
sndto = sendto(sockfd1,buff,len_buff,NULL,(const struct sockaddr
*)&client_addr1,sizeof(struct sockaddr));
// посылаем широковещательный запрос, получаем одновременно
// туеву хучу ответов, разбираем их:
int rc = 1 ;
int siz = sizeof(recv_addr1);
while (rc >0) {
rc = select(0, &stFDSet, NULL, NULL, &stTimeVal);
if (rc == SOCKET_ERROR)
// орем на всю систему - ошибка сокета;
if (rc == 0)
flTimeOut = true; // timeout больше ничего не пришло, хорош ждать.
if (rc > 0)
recvfrom(sockfd1,buff_recv[count_buff],sizeof(buff_recv[count_buff]),0,
(struct sockaddr *)&recv_addr1,&siz);
// принимаем и заполняем массив буферов.
}