bool isRecvReady(const Poco::Timespan &timeout) { struct timeval tv; tv.tv_sec = timeout.seconds(); tv.tv_usec = timeout.microseconds(); if (not connected) { UDT::UDSET readfds; UD_SET(serverSock, &readfds); if (UDT::select(1, &readfds, nullptr, nullptr, &tv) != 1) return false; sockaddr addr; int addrlen = sizeof(addr); this->clientSock = UDT::accept(this->serverSock, &addr, &addrlen); if (addrlen == 0) { throw Pothos::RuntimeException("UDT::accept()", UDT::getlasterror().getErrorMessage()); } this->connected = true; return false; } UDT::UDSET readfds; UD_SET(clientSock, &readfds); return UDT::select(1, &readfds, nullptr, nullptr, &tv) == 1; }