在循环中使用select,注意FD_SET需要放在循环体内部
do
{
FD_ZERO(&fdWrite);
FD_SET(m_nCliSockfd, &fdWrite);
nRet = select(m_nCliSockfd+1, NULL, &fdWrite, NULL, &tv);
}while(1);
这是因为select之后会清空fdWrite中的套接字,如果放在循环体外部会导致下次select时返回的结果为-1。