【问题标题】:Is a non-blocking connect guaranteed to fail with EINPROGRESS?EINPROGRESS 是否保证非阻塞连接失败?
【发布时间】:2018-07-12 21:31:09
【问题描述】:

如果我设置一个socket进行非阻塞操作,如下:

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

...是connect保证会以EINPROGRESS 失败,还是我需要处理它立即成功的情况?

【问题讨论】:

    标签: sockets


    【解决方案1】:

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

    【讨论】:

    • "连接到 127.0.0.1 会立即连接或失败。" -- 不在我的测试中,它没有,这就是我问的原因。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2013-12-10
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2019-02-20
      • 2017-04-18
      相关资源
      最近更新 更多