是否有超時的跨平臺使用soulution功能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;
}
如何解決這個問題? 謝謝!
@ryanbwork不,超時是10 – Boris
請參閱下面的解決方案? – ryanbwork
是否立即彈出選擇或等待10s彈出之前(如果你不連接到它)?它看起來沒問題(除了提到的非Windows平臺的s + 1),其他的東西是不對的... – mark