int GetNextPkt(SOCKET UDPSock, struct PACKET *pkt, int WaitSec, int WaitMilSec)

{         

            struct sockaddr_in from;

            int sl = sizeof(from);

            fd_set readFd;

            timeval SelectTime;

            SelectTime.tv_sec = WaitSec;

            SelectTime.tv_usec=WaitMilSec;

            FD_ZERO(&readFd);

            FD_SET(UDPSock,&readFd);

            int ret = select(255,&readFd,NULL,NULL,&SelectTime);

            if (FD_ISSET(UDPSock, &readFd)==1)

            {

                        ret = recvfrom(UDPSock, (char *)pkt, sizeof(struct PACKET), 0 ,(struct sockaddr *)&from,(socklen_t*)&sl);

                        if (ret>0)

                        {         

                                    strcpy(pkt->IPsVisited[pkt->NumHops],MYIP);

                                    pkt->PortsVisited[pkt->NumHops]=UDPPort;

                                    (pkt->NumHops)++;

                                    ShowPkt(pkt,&from);

                                    return ret;

                        }

            }

            return -1;

}