socket的select使用超时的有关问题

socket的select使用超时的问题
一段udp客户端程序,c写的,在windows下没问题,在linux下时,在发送数据等待回应时,用select就会超时,去掉select能够正常读数,这是什么原因?

调用select的函数:
int is_readible(int * bReadible)
{
struct timeval timeout;
fd_set fds;
int nStatus;

timeout.tv_sec=10;
timeout.tv_usec=10;
 
FD_ZERO(&fds);
FD_SET(m_hNtpClientSocket, &fds);
nStatus = select(0, &fds, NULL, NULL, &timeout);
printf("nStatus = %d \n",nStatus);
if (nStatus == -1)

return SD_FALSE;
}
else
{
*bReadible = !(nStatus == 0);
return SD_TRUE;
}
}


nStatus = select(0, &fds, NULL, NULL, &timeout);

用错列。。。

select 的第一个参数必须是 m_hNtpClientSocket + 1


楼上是正解,select函数第一个参数是fd_set的max值,一般都是取最大的fd并且+1

探讨

nStatus = select(0, &fds, NULL, NULL, &timeout);

用错列。。。

select 的第一个参数必须是 m_hNtpClientSocket + 1

socket的select使用超时的有关问题

相关文章:

你感兴趣的文章:

标签云: