下面有一个片段--我已经用几种方式调整了我的tv_usec,但是我在select()循环中一直坐着几乎整整10秒,不管tv_usec设置在什么位置。
char buffer[512];
fd_set readfds;
struct timeval tv;
tv.tv_usec = 50;
int rv = 1;
// clear the set ahead of time
FD_ZERO(&readfds);
// add our descriptors to the set
FD_SET(mySocket, &readfds);
// the n param for select()
int n = mySocket + 1;
while(rv != 0)
{
rv = select(n, &readfds, NULL, NULL, &tv);
if (rv == -1)
perror("select"); // error occurred in select()
bzero(buffer,512);
int n = recvfrom(mySocket,buffer,512,0,(struct sockaddr *)&server, &sockLen);
// do stuff...
}发布于 2014-03-18 04:53:51
需要将tv.tv_sec初始化为某些内容。设置tv.tv_sec = 0解决了这个问题。
https://stackoverflow.com/questions/22470658
复制相似问题