- 论坛徽章:
- 0
|
void* CMySocket: eekMessage(void* lpParameter)
{
CMySocket* pSocket = (CMySocket* )lpParameter;
int usersock_fd = pSocket->GetSocketfd();
struct timeval tv;
// tv.tv_sec = 0;
// tv.tv_usec = 5000;
fd_set rdfdset, exfdset;
while(1)
{
FD_ZERO(&rdfdset);
FD_ZERO(&exfdset);
FD_SET(usersock_fd, &rdfdset);
FD_SET(usersock_fd, &exfdset);
if(select(usersock_fd+1, &rdfdset, NULL, &exfdset, NULL)< 0)
{
printf("select Error: %s\n", strerror(errno));
exit(1);
}
if(FD_ISSET(usersock_fd, &rdfdset))//FD_ISSET(usersock_fd, &rdfdset)
{
pSocket->OnReceive();
}
else if(FD_ISSET(usersock_fd, &exfdset))
{
pSocket->OnClose();
break;
}
}
}
这是一个线程, 为什么不管在什么情况下 它始终调用pSocket->OnReceive();就是说在接收字节为0的情况下那个FD_ISSET(usersock_fd, &rdfdset)也返回1呀 ,郁闷中。。。。。等待!! |
|