gpt4 book ai didi

c - epoll:当我在同一事件中获得 EPOLLOUT 和 EPOLLHUP 时,什么是适当的行为?

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:00 25 4
gpt4 key购买 nike

第一次 epoll() 用户。我正在使用 epoll 编写一个简单的 HTTP 客户端,以连接到我控制的主机上的 nginx Web 服务器。

这是我正在查看的事件序列

  1. 我关闭了(服务器)主机
  2. 我启动我的客户端,它执行 socket()epoll_create1()epoll_ctl()connect(), epoll_wait(EPOLLOUT) 我认为是正确的
  3. 我启动主机
  4. Web 服务器启动后,epoll_wait() 完成并返回一个事件。

通常,epoll_wait() 返回的事件只是EPOLLOUT。但是,每尝试 5 次左右,我就会得到 EPOLLOUT|EPOLLHUP。而且我不确定该怎么做。

这对 nginx 合适吗? EPOLLOUT|EPOLLHUP 是否有意义?我是否应该忽略 EPOLLHUP,而只是 send() 我的数据并检查返回值?忽略 HUP 感觉很奇怪……但我是 epoll 的新手,据我所知,这种事情一直都在发生。

我想让客户端做的就是发送一个普通的 ole HTTP GET 请求,然后接收响应。

谢谢!

编辑

自最初发布以来完全重写了这个问题。如果这未获得 SO 批准,我深表歉意。

最佳答案

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com