第一次epoll()
用户。我正在使用epoll
编写一个简单的HTTP客户端,以连接到我控制的主机上的nginx Web服务器。
以下是我正在查看的这一系列事件
socket()
,epoll_create1()
,epoll_ctl()
,connect()
,epoll_wait(EPOLLOUT)
我认为是正确的epoll_wait()
完成并返回一个事件。通常,epoll_wait()
返回的事件仅为EPOLLOUT
。但是,每隔5次尝试,我就会EPOLLOUT|EPOLLHUP
。我不知道该怎么做。
nginx
这是否正确? EPOLLOUT|EPOLLHUP
甚至有意义吗?
我应该忽略EPOLLHUP
,只是忽略send()
我的数据并检查返回值吗?忽略HUP
感觉很奇怪...但我是epoll
的新手,而且据我所知,这些东西一直都在发生。
我希望客户端做的就是发送一个简单的HTTP GET请求,然后重新获得响应。
谢谢!
自最初发布以来,完全重写了这个问题。如果这不是SO批准的,我很抱歉。
答案 0 :(得分:1)
通过实验,我发现在调用connect()之前在刚刚创建的套接字上启用EPOLLOUT会触发EPOLLOUT | EPOLLHUP事件。我做的是先做一个connect(),验证它是否返回EINPROGRESS,然后启用EPOLLOUT。