Функция select возвращает + ve, когда некоторые пакеты достигают UDP-порта, как ожидалось. Но это происходит только один раз. Со второго раза, когда пакет принимается на UDP-порту, функция не отвечает за это. Но в первый раз после получения пакета UDP, если я делаю sendto() в том же сокете, функция select отвечает. В чем причина такого поведения?select() возвращает положительное значение только один раз
Код:
while (true)
{
IP_FD_ZERO (&readFD);
IP_FD_SET (ipSock, &readFD);
if (select(&readFD, NULL, NULL, 2000) > 0)
{
if (IP_FD_ISSET(ipSock, &readFD)) //activity on UDP socket
{
addrlen = sizeof(SocketAddrIn_t);
noOfbytes = recvfrom(ipSock,
(char*)ipRxBuffer,
sizeof(ipRxBuffer),
0,
(SocketAddr_t *)&from,
(int*)&addrlen);
}
}
}
Какую платформу вы кодируете ... ??? Я не знаком с IP_FD_ISSET или с select() только с 4 параметрами ... – TonyB
ОС EMBOS и с использованием стека EMBOS-IP –