select()不使用为timeval设置的内容

MrD*_*Duk 0 c++ sockets timeval

我在下面有一个片段 - 我已经tv_usec用几种方式调整了我,但是select()无论tv_usec设置的是什么,我都会在一个循环中停留几乎整整10秒钟.

    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...
    }
Run Code Online (Sandbox Code Playgroud)

MrD*_*Duk 5

tv.tv_sec需要初始化为某种东西.设置tv.tv_sec = 0解决了这个问题.