Sockets EINPROGRESS是否保证非阻塞连接失败?

Sockets EINPROGRESS是否保证非阻塞连接失败?,sockets,Sockets,如果我为非阻塞操作设置套接字,如下所示: int fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); int rc = connect(fd, (struct sockaddr *)&addr, sizeof(addr)); “connect是否保证通过EINPROGRESS失败,或者是否需要立即处理成功的情况?不一定。连接到127.0.0.1可能会立即连接或失败。不一定。连接到127.0.0.1可能会立即连接

如果我为非阻塞操作设置套接字,如下所示:

int fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP);
int rc = connect(fd, (struct sockaddr *)&addr, sizeof(addr));

connect
是否保证通过
EINPROGRESS
失败,或者是否需要立即处理成功的情况?

不一定。连接到
127.0.0.1
可能会立即连接或失败。

不一定。连接到
127.0.0.1
可能会立即连接或失败。

您需要立即处理成功的情况。这就是它返回0或-1的原因。对于非阻塞模式,文档中没有任何例外。

您需要处理它立即成功的情况。这就是它返回0或-1的原因。对于非阻塞模式,文档中没有任何例外。

“连接到127.0.0.1会立即连接或失败。”--在我的测试中没有,它不会,这就是我问的原因。“连接到127.0.0.1会立即连接或失败。”--在我的测试中没有,它不会,这就是我问的原因。