您应该使用以下步骤进行异步连接:
- 用创建套接字
socket(..., SOCK_NONBLOCK, ...)
- 开始与
connect(fd, ...)
- 如果返回值既不是也不
0
是EINPROGRESS
,则中止并返回错误 - 等待直到
fd
发出准备输出的信号 - 检查插座的状态
getsockopt(fd, SOL_SOCKET, SO_ERROR, ...)
- 做完了
没有循环-除非您要处理
EINTR。
如果首先启动客户端,则应该
ECONNREFUSED在最后一步看到错误。如果发生这种情况,请关闭插座并从头开始。
如果不查看更多详细信息,很难分辨代码出了什么问题。我想,您不会因
check_socket操作错误而中止。



