accept
ソケットをノンブロッキングに設定せずに関数を使用してクライアントを受け入れるためのタイムアウトクロスプラットフォームソリューションはありますか?
関数を使用する必要があることはわかっていselect
ますが、何が間違っていますか?
SOCKET NativesAcceptClient(SOCKET s, int timeout)
{
int iResult;
struct timeval tv;
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(s, &rfds);
tv.tv_sec = (long)timeout;
tv.tv_usec = 0;
iResult = select(s, &rfds, (fd_set *) 0, (fd_set *) 0, &tv);
if(iResult > 0)
{
return accept(s, NULL, NULL);
}
else
{
//always here, even if i connect from another application
}
return 0;
}
それを修正する方法は?ありがとう!