套接字错误的可能原因有哪些EINPROGRESS
在索拉里斯?
我们如何检查根本原因?
tcp api 是:连接
你有一个非阻塞套接字并且你正在调用connect()
在里面。自从connect()
需要进行 3 次握手(因此是网络往返),它要么在阻塞套接字中阻塞等待 SYN-ACK,要么向您提供一些指示,表明在非阻塞套接字中尚未成功。通常,非阻塞套接字会返回 EAGAIN/EWOULDBLOCK 来告诉您它们无法进行,您应该重试:这不完全是您的情况,connect()
当没有空闲的临时端口时返回 EAGAIN/EWOULDBLOCK 告诉您应该稍后重试;因此,非阻塞连接还有另一个错误:EINPROGRESS,它告诉您操作正在进行中,您应该稍后检查其状态。
要稍后检查状态,套接字将准备好可写,因此您可以使用select()
/poll()/...
测试一下,之后你必须getsockopt(...SO_ERROR...)
获取 connect() 操作的成功/失败状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)