为什么选择未绑定/未连接的套接字不会失败?

时间:2017-11-03 17:03:32

标签: c linux sockets select

这是我的示例代码:

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>

int main()
{
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    printf("--> fd is %d, FD_SETSIZE is %d\n", fd, FD_SETSIZE);
    fd_set set;
    FD_ZERO(&set);
    FD_SET(fd, &set);
    int retval = select(fd + 1, &set, NULL, NULL, NULL);
    if(-1 == retval)
    {
        perror("select");
    }
    printf("retval is %d\n", retval);
}

为什么选择不失败或阻止/超时? (retval为1,并且fd设置为set)但是在一个openend套接字上,没有可用的数据。我错过了哪些文件?

0 个答案:

没有答案