當某些數據包按預期到達UDP端口時,select函數返回+ ve值。但是這隻發生一次。從第二次在UDP端口接收到數據包時,該功能沒有響應。但是,如果我在同一個套接字上執行sendto(),那麼在第一次接收到UDP數據包後,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或只有4個參數的select()... – TonyB 2014-12-03 09:27:47
EMBOS操作系統和使用EMBOS-IP堆棧 – 2014-12-03 09:29:04