第一次使用。我使用epoll()
编写一个简单的HTTP客户端,连接到主机I控件上的nginx Web服务器。
这是我正在看的一系列事件
我关闭(服务器)主机
我启动我的客户机,它会epoll
,socket()
,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/