在connect()阻塞条件下,连接同网段一个不存在的IP地址,立即返回,调用perror显示no route to host.
连接其他网段或外网时,显示connection timeout,期间呈阻塞状态。
所以得出以下结论:
1.在连接内网同网段时,connect可以近似认为非阻塞。
2.在连接其他网段及外网时,connect默认为阻塞状态。
在实现时,由于无法保证connect的目标一定在本网段内,所以先将其置为非阻塞状态,然后调用select和getsockpt等检查是否已经连接成功。此时,connect显示EINPROGRESS,即在非阻塞下connect已经处于连接状态。