日期:2014-05-16  浏览次数:20587 次

Linux 非阻塞connect,错误码:EINPROGRESS
Linux 非阻塞connect,错误码:EINPROGRESS

EINPROGRESS 115 /* Operation now in progress */

        这是正确的。和windows不同的是,这里显示EINPROGRESS,windows应该是EWOULDBLOCK。感觉linux的这种表述更准确一些,确实是EINPROGRESS (正在处理),而EWOULDBLOCK应该是在网卡或者系统繁忙、无法及时处理数据。


当我们以非阻塞的方式来进行连接的时候,返回的结果如果是 -1,这并不代表这次连接发生了错误,如果它的返回结果是 EINPROGRESS,那么就代表连接还在进行中。 后面可以通过poll或者select来判断socket是否可写,如果可以写,说明连接完成了