第一次使用。我使用epoll()编写一个简单的HTTP客户端,连接到主机I控件上的nginx Web服务器。
这是我正在看的一系列事件
我关闭(服务器)主机
我启动我的客户机,它会epollsocket()epoll_create1()epoll_ctl()connect(),我相信这是正确的
我启动主机
一旦web服务器启动,epoll_wait(EPOLLOUT)就会完成并返回一个事件。
通常,epoll_wait()返回的事件就是epoll_wait()。然而,每五次尝试左右,我就会得到EPOLLOUT。我不知道该怎么办。
EPOLLOUT|EPOLLHUP是否正确?甚至有意义吗?
我是否应该忽略nginx,而只是EPOLLOUT|EPOLLHUP我的数据并检查返回值?忽略aEPOLLHUP感觉很奇怪。。。但我是新来的,据我所知,这种事情总是发生的。
我只希望客户端发送一个普通的ole HTTP GET请求,然后接收响应。
谢谢!
编辑
完全重写这个问题,因为最初的张贴。如果不同意,我道歉。

最佳答案

通过实验,我发现在调用connect()之前,在刚刚创建的套接字上启用EPOLLOUT会触发EPOLLOUT | EPOLLHUP事件。我所做的是首先执行connect(),验证它是否返回EINPROGRESS,然后启用epolout。

关于c - epoll:当我在同一事件中得到EPOLLOUT和EPOLLHUP时,什么是适当的行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35228707/

10-11 20:59