问题标签 [getaddrinfo-a]
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 - 如何使用 getaddrinfo_a 与 glibc 进行异步解析
一个经常被忽视的函数,它不需要外部库,但基本上没有任何文档。
c++ - getaddrinfo 响应缓慢
我正在使用 getaddrinfo 从 Windows 上的 C++ 进行 DNS 查询。我曾经使用 Windows API DnsQuery 并且效果很好,但是在向我的软件添加 IPv6 支持时,我切换到了 getaddrinfo。从那时起,我看到了以下内容:
我的问题是有时 getaddrinfo 需要很长时间才能完成。getaddrinfo 的典型响应只需要几毫秒,但在 10000 次中大约有 1 次需要更长的时间,在某些情况下大约需要 15 秒,但有几种情况需要几分钟。
我在服务器上运行了 Wireshark 并分析了我的应用程序调试日志并看到以下内容:
- 我调用函数getaddrinfo。
- 15 秒后,我的机器查询 DNS 服务器。
- 几毫秒后,我收到了来自 DNS 服务器的响应。
这里奇怪的是,实际的 DNS 查询只需要十分之一秒,但 getaddrinfo 实际执行的时间要长得多。
许多用户都报告了这个问题,所以这不是我的机器特有的问题。
那么 getaddrinfo 除了联系 DNS 服务器还能做什么呢?
编辑:
- 有几个地址出现了问题。如果我尝试使用这些地址重现问题,则不会出现问题。
- 我做了一些愚蠢的事情。在每次 DNS 查询时,都会解析 etc/services。但是,这并不能解释几分钟的延迟。(感谢 D.Shawley)
编辑 2
- 我的软件进行的一种 DNS 查询是反垃圾邮件 DNSBL 查询。一位用户的日志显示,查找 ip.address1.example.com 似乎总是需要 2039 秒,而查找 another.ip.address.example.com 总是需要 1324 秒。在那之后的第二天,这些地址的查找就很好了。起初我认为 DNS BL 作者在他们这边设置了某种超时。但如果这是核心问题,getaddrinfo 应该早点超时吧?
c - 多个 valgrind 错误:条件跳转或移动取决于未初始化的值
我正在运行 Valgrind,但出现以下错误(这不是唯一的错误):
我的tunnelURL()
函数如下所示(C 代码):
第 336 行对应于带有函数调用的if
语句。getaddrinfo()
我不确定我没有初始化什么。我传入的字符串“应该”已经设置好了。我打印出来就好了。我还收到与同一行代码相对应的另一个错误:
关于可能是什么原因的任何想法?
objective-c - 在 getaddrinfo 期间用户数量非常少的 BAD_ACCESS
好吧,我在这里完全不知所措。一小部分用户似乎在我的主机名翻译中有 BAD_ACCESS 错误。
下面的完整崩溃:
这是我用来解析 dns(重要部分)的代码。我在这里错过了什么吗?我可以添加更多支票吗?这只是一个非常少的用户数量,所以成千上万的用户没有问题。
我的主机名解析代码的一部分:我的 [CFNetworkStream openBSDSocket::] 方法
依次调用 [self getHostAddress:xxxx] 方法下面的完整方法:
能给我咨询一下吗?我似乎真的被困在这里,那些(低)数量的用户会在这段代码中看到问题吗?我需要额外的检查吗?
我真的可以使用你的提示/咨询。
重要提示:受影响的用户表示只有在网络中断时才会发生这种情况。但是我不能接受断开的网络连接会造成上述问题?
编辑:我做了泄漏测试;很长一段时间没有伪造 DNS 结果(如果(retval != 0)),但我的 Mac 上没有内存泄漏。
linux - 函数 getaddrinfo 的问题
我使用函数getaddrinfo获取域名的ip地址,OS=linux,语言=c++。我注意到,当拔下以太网电缆时,该函数会阻塞线程 30 秒(函数不会在 30 秒内返回)。对我来说时间太长了。是否可以为该函数设置超时或中断函数的执行或任何其他想法?
谢谢 EB
winapi - WINAPI中是否有非阻塞的主机解析方法?
有getaddrinfo()
用于阻塞主机解析,但有非阻塞方法吗?
c++ - gai_cancel() 需要很长时间才能成功
我正在尝试在 C++ 中异步查找域。原因是我希望能够有效地添加超时时间,以防系统无法查找域。我遇到了 getaddrinfo_a() 命令,所以我决定试一试。但是,在我的机器上取消任何不会成功的 dns 查找(例如没有互联网连接时)永远不会少于 20 秒。这是一个简单的例子:
像这样编译:
然后在没有互联网连接的情况下在基于 linux 的系统上运行命令,如下所示:
你会发现程序总是需要大约 20 秒才能关闭。任何帮助将不胜感激!