if (-1 == fcntl(iSocketfd, F_SETFL, O_NONBLOCK))
{
printf("fcntl socket error!\n");
return -1;
}
int iSocketLen = sizeof(struct sockaddr_in);
/* set recvfrom from server timeout */
struct timeval tv;
fd_set readfds;
for(;;)
{
tv.tv_sec = TIME_OUT_TIME;
tv.tv_usec = 0;
FD_ZERO(&readfds);
FD_SET(iSocketfd, &readfds);
if (select(iSocketfd+1,&readfds,NULL, NULL, &tv) > 0)
{
iRecvNum = recvfrom(iSocketfd,(void *)stRecvBuf,sizeof(*(stRecvBuf)),0, (struct sockaddr *)stRemote,&iSocketLen);
if (-1 == iRecvNum)
{
printf("received data error!\n");
}
printf("iRecvNum is %d\n",iRecvNum);
}
else
{
printf("timeout!there is no data arrived!\n"); //return -1
}
}