C++ 异步主机名解析

标签 c++ networking epoll getaddrinfo gethostbyname

我有一个 epoll 服务器,它有时会使用主机名表示打开传出连接。由于传入连接流的速率很高,我不想阻止像 getaddrinfo()gethostbyname() 这样的地方。当然,我可以实现一个缓存和一个新线程,在其中执行主机名解析。是否有单线程非阻塞方式将主机名解析为 IP?

最佳答案

为此目的有各种库,例如libevent 包含解析器。

虽然我有点同意@Puciek 的观点,但在单个线程中执行此操作会增加相当多的复杂性以获得可疑的好处。使用专用解析线程并通过管道与其通信可能是最佳解决方案。

既然你提到了 epoll 我猜你正在使用 Linux。它有一个 getaddrinfo_a 函数,如果我理解正确的话,它会为你做一部分。它克隆一个线程并在那里运行 getaddrinfo。我从未使用过它,所以除此之外无能为力。

关于C++ 异步主机名解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527306/

相关文章:

c++ - 为什么可以将枚举作为函数变量传递但不能返回枚举?

java - "Rubber banding"会解决多人插值问题吗?

networking - 如何查看 Windows 应用程序通过我的网络发送哪些数据?

c - GLX 垂直同步事件

linux - 什么情况下是在前台或后台进行关闭/关闭?

c++ - 成员函数声明的参数列表后的单个&符号是什么意思?

c++ - 如何在 QGraphicsWidget 中设置 Qwidget?

c++ - 无法从源代码安装opencv

java - UDP 将数据从一台设备发送到另一台设备

rust - 如何在 Rust 中使用 epoll