#include "sockets.h" #if defined( WIN32 ) #include #elif defined ( POSIX ) #include #define SOCKET_ERROR -1 #else #error "unsupported platform" #endif #ifdef __APPLE__ #include #endif int Net_Wait( socket_t *sock, long sec, long usec ){ // used for select() #ifdef WIN32 TIMEVAL tout = { sec, usec }; #endif #if defined ( POSIX ) timeval tout; tout.tv_sec = sec; tout.tv_usec = usec; #endif // select() will identify if the socket needs an update // if the socket is identified that means there's either a message or the connection has been closed/reset/terminated fd_set readfds; FD_ZERO( &readfds ); FD_SET( ( (unsigned int)sock->socket ), &readfds ); // from select man page: // n is the highest-numbered descriptor in any of the three sets, plus 1 // (no use on windows) switch ( select( sock->socket + 1, &readfds, 0, 0, &tout ) ) { case SOCKET_ERROR: return -1; case 0: return 0; default: return 1; } }