void TCPConnection::ThreadListen(void* arg) { //printf("ThreadListe\n"); TCPConnection *MyClass = static_cast<TCPConnection*>(arg); while(MyClass->mRunningListenFlag) { fd_set rfd; // read event fd_set efd; // accept event int retVal, nfds = 0; timeval tv = { 0 }; tv.tv_usec = 1; FD_ZERO(&rfd); FD_ZERO(&efd); FD_SET(MyClass->mSocketListener, &rfd); nfds = nfds > MyClass->mSocketListener ? nfds : MyClass->mSocketListener; FD_SET(MyClass->mSocketListener, &efd); nfds = nfds > MyClass->mSocketListener ? nfds : MyClass->mSocketListener; retVal = select(nfds + 1, &rfd, NULL, & efd, &tv); if (retVal == -1 && errno == EINTR) return ; if (FD_ISSET(MyClass->mSocketListener, &efd)) { char c; retVal = recv(MyClass->mSocketListener, &c, 1, MSG_OOB); } if (FD_ISSET(MyClass->mSocketListener, &rfd)) { //if(MyClass->mSocketPc == -1) MyClass->OnAccept(MyClass->mSocketListener); //else //printf("Reject connection from PC !!!!\n"); } } }