0

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

有没有更好的方法来做到这一点?如果不是,那么等待套接字变为可写是保证连接已建立的好方法吗?

4

1 回答 1

0

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

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

所以这是记录在案的方法,对我来说听起来很正确。

于 2009-12-10T04:16:52.767 回答