2
我对如何处理如下连接超时一些代码使用libev(请参考http://lists.schmorp.de/pipermail/libev/2011q2/001365.html):如何检查是否建立连接时使用libev与非块插座
sd = create_socket()
set_socket_nonblock(sd)
connect("127.0.0.1", port) // connect to an invalid port
ev_io_init(&w_io, connect_cb, sd, EV_WRITE)
ev_io_start(...)
ev_timer_init(&w_timer, timeout_cb, 5.0, 0)
ev_timer_start(...)
,并在某处执行ev_run。 connect_cb被调用,在这个回调函数中,我用EV_ERROR检查了revents,结果没有错误。这很奇怪,因为我提供了一个无法在本地机器上侦听的无效端口号。无论如何,我尝试在connect_cb函数中发送一条消息,得到错误111,这意味着连接被拒绝。我很困惑!如何在使用非阻塞套接字时检查连接是否正确建立?