将套接字文件描述符设置成非阻塞之后,对于CONNECT的判定问题。
用fcntl将套接字设置为非阻塞。
connect的返回:要么返回文件描述符,要么ERRNO是EINPROGRESS。
这时候connect是有可能失败的,如何判断?
结论:无论如何,去I/O复用探查套接字的可写状态,都会返回可写,要做的是:用getsockopt去取SOL_SOCKET层上的SO_ERROR选项,这个选项就是connect的状态。
将套接字文件描述符设置成非阻塞之后,对于CONNECT的判定问题。
用fcntl将套接字设置为非阻塞。
connect的返回:要么返回文件描述符,要么ERRNO是EINPROGRESS。
这时候connect是有可能失败的,如何判断?
结论:无论如何,去I/O复用探查套接字的可写状态,都会返回可写,要做的是:用getsockopt去取SOL_SOCKET层上的SO_ERROR选项,这个选项就是connect的状态。