检测是否已建立连接

时间:2009-11-15 19:39:08

标签: linux epoll

我最近开始在Linux下学习网络编程,似乎我无法找到正确的方法来检测是否已建立与远程主机的连接。 ATM所有未建立的连接都在epoll实例中注册。一旦EPOLLOUT标志设置为1的事件到达,连接就会标记为已建立。这很简单,但我做得对......

有更好的方法吗?如果没有,等待套接字变为可写是否是保证连接已建立的好方法?

1 个答案:

答案 0 :(得分:0)

poll / epoll / select应该都可以。人工页面 connect(2)表示您获得了EINPROGRESS,并且您可以通过使用select或poll检查它是否可写来检测完成。然后使用getsockopt检查SOL_SOCKET,SO_ERROR状态,以查看连接是成功还是失败。

如果您在尝试连接时重试,则会获得EALREADY。

所以这是记录在案的方式,听起来对我来说。