问题标签 [epoll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 你能推荐一些关于 Linux 上 Epoll 的指南吗?
我需要了解 Linux 系统上的 Epoll。
您能否推荐有关 epoll 库的手册或指南?
需要更详细的指南。最好有一些例子。
帮我。并感谢您的阅读。
windows - Windows 上最好的 epoll/kqueue/select 等效项是什么?
什么是 Windows 最好的 I/O 事件通知工具?
最好的意思是……
- 对输入文件描述符的数量没有限制
- 适用于所有文件描述符(磁盘文件,套接字,...)
- 提供多种通知方式(边沿触发、限位触发)
select - Boost Message Queue 不是基于 POSIX 消息队列?无法选择(2)?
我想我会使用 Boost.Interprocess 的消息队列代替套接字在一个主机内进行通信。但是在深入研究之后,似乎这个库出于某种原因避开了 POSIX 消息队列工具(我的 Linux 系统支持),而是在 POSIX 共享内存之上实现。界面非常相似,您可能不会马上猜到,但似乎确实如此。
对我来说不利的是,shm_open(3)
与select(2)
通过mq_open(3)
.
在这种情况下,Boost 的库似乎丢失了。有谁知道为什么会这样?即使 POSIX 消息队列仅在某些系统上可用,我希望 Boost 在可用的地方使用该工具,并仅在必要时重新实现它。POSIX 系统是否存在一些我还不认识的缺陷?
python - epoll如何在Python中检测客户端关闭?
这是我的服务器
客户端输入
服务器端输出
奇怪的是,客户端关闭连接后,epoll仍然可以轮询recv并发送事件!为什么 EPOLLERR 事件永远不会发生?如果你使用 EPOLLHUP 也是一样的。
我注意到 EPOLLERR 事件仅在您尝试编写关闭的连接时发生。除此之外,还有其他方法可以判断连接是否已关闭?
如果在 EPOLLIN 事件中一无所获,将连接视为关闭是否正确?
linux - 当另一端写入和关闭时,在 epoll 控制的非阻塞套接字上丢失字节
我有一个当前订阅的非阻塞套接字:
它接收几个 EPOLLIN,我非阻塞地读取它们直到 EAGAIN,然后我收到 HUP 和 RDHUP,有时还要读取几个字节。
另一面只是:
我已经在 epollin 和关闭时间的事件循环中直接尝试使用 msg_peek 进行 recv,并添加接收到的数据它并不总是收到 960,有时只有大约 480 个字节。
使套接字非阻塞或在发送和关闭之间的客户端中放置一个 sleep(1) 可以正常工作。
在我看来,与 epoll 相关的非阻塞套接字问题更多。像“nc -l -p port”这样简单的东西接收适当数量的字节。
linux - 检测连接是否建立
我最近开始在 Linux 下学习网络编程,似乎我无法找到正确的方法来检测是否已建立与远程主机的连接。ATM 所有未建立的连接都注册在一个 epoll 实例中。一旦 EPOLLOUT 标志设置为 1 的事件到达,连接就被标记为已建立。就这么简单,但我做对了......
有没有更好的方法来做到这一点?如果不是,那么等待套接字变为可写是保证连接已建立的好方法吗?
linux - 如何在单个事件循环中同时使用 AIO 和 epoll?
如何将 AIO 和 epoll 组合在一个事件循环中?
谷歌在 2002 年和 2003 年发现了很多关于统一它们的讨论,但不清楚是否发生了什么事,或者是否有可能。
有没有人使用 eventfd 作为 aio 信号的 epoll 循环?
linux - 接受/epoll 问题
我有这个使用 epoll 的代码,它有问题。当我运行它时,它会给出输出: Server-socket() is OK... Server-bind() is OK... 3 4 accept: Invalid argument
我在 ubuntu linux 上运行它,系统更新,作为受限用户和 root 接受的输入有什么问题?我应该改变什么?
linux - 可以发送功能块吗
我正在编写一个聊天程序,对于服务器,当我发送数据时,send() 函数是否需要很长时间才能发送数据?
这是我的问题:我正在使用带有 epoll 的 linux 2.6,单线程中的服务器 如果 send() 阻塞,那么这意味着服务器上的所有其他活动都将停止。就像如果有一个非常慢的客户端很长时间没有向 tcp 数据包发送 ACK 响应,那么发送函数会立即继续执行,还是会等待客户端很长时间。我不希望一个/几个慢客户端导致聊天服务器延迟。
我想要的是 send() 非阻塞并很快返回。如果它没有发送所有数据,它将简单地返回发送的数量,我将从缓冲区中删除它并在下次服务时继续发送,直到发送所有数据。基本上我不想在缓慢或无响应的客户端上长时间阻塞发送。