在connect()阻塞条件下,连接同网段一个不存在的IP地址,立即返回,调用perror显示no route to host.
连接其他网段或外网时,显示connection timeout,期间呈阻塞状态。
所以得出以下结论:
1.在连接内网同网段时,connect可以近似认为非阻塞。
2.在连接其他网段及外网时,connect默认为阻塞状态。
在实现时,由于无法保证connect的目标一定在本网段内,所以先将其置为非阻塞状态,然后调用select和getsockpt等检查是否已经连接成功。此时,connect显示EINPROGRESS,即在非阻塞下connect已经处于连接状态。
本文探讨了connect函数在网络连接中的表现特点,指出其在同网段内的非阻塞特性及跨网段时的阻塞行为,并提出了通过设置非阻塞模式结合select和getsockopt检查连接状态的方法。
923

被折叠的 条评论
为什么被折叠?



