问题标签 [getaddrinfo]

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.

0 投票
2 回答
12794 浏览

winsock - 如何使用 getaddrinfo()?

我正在尝试制作一个简单的程序,它接受像 www.google.com 这样的字符串并返回 IP 地址......

到目前为止我所拥有的:

第 4 个参数中的第 3 个应该做什么?getaddrinfo 函数是修改 new_addr 结构还是什么?我不太了解 msdn 文档。解析主机名后,我想将套接字连接到它。

0 投票
0 回答
998 浏览

python - IOError:[Errno 套接字错误] [Errno 11004] getaddrinfo 在可访问的地址上失败

我可以在我的浏览器中打开网址:http ://www.bloomberg.com/markets/chart/data/1M/AAPL: AR,但我的代码在这里得到了结果I/O error(socket error):[Errno 11004] getaddrinfo failed ::

0 投票
1 回答
20620 浏览

c - 如何使用 getaddrinfo 连接到使用外部 IP 的服务器?

我正在编写一个小型 C 客户端/服务器应用程序,但在使用外部 IP 地址时无法使连接正常工作。客户端和服务器的代码都取自这里,尤其是客户端:

而服务器:

如果我在命令行中指定我的机器的 IP,因此server_name客户端中的 设置为类似 的字符串151.51.xxx.xxx,则套接字无法连接到服务器。也使用127.0.0.1显示相同的行为,这让我认为当文档说明时:

您感兴趣的主机名位于 nodename 参数中。地址可以是主机名,例如“www.example.com”,也可以是 IPv4 或 IPv6 地址(作为字符串传递)。

这只是在开玩笑。

我做错了什么吗?防火墙等是否存在阻止客户端使用 IP 地址连接的问题?

注意:我已经针对这个问题进行了很多搜索,有些人说完全避免使用getaddrinfo并直接填充INADDR_ANY,但是getaddrinfo文档指出传递NULLasnodename应该已经用 填充地址INADDR_ANY,所以我不明白为什么要使用当新方法自动执行此操作时,旧方法。

0 投票
3 回答
4019 浏览

python - 我应该如何在 Python 中处理这个 HTTPS 请求?

我正在尝试在 Python 中使用Strava API v3,但恐怕我遗漏了一些东西。文档说:

此基本 URL 用于所有 Strava API 请求: https ://api.strava.com

响应采用 JSON 格式并经过 gzip 压缩。

我目前正在这样做:

并开始这样做:

我不知道从哪里开始,因为我不太了解 HTTP 请求和 HTTPS

更新:根据梅林使用requests模块的建议,我这样做:

但不断收到错误:

0 投票
2 回答
1101 浏览

ruby-on-rails-3.1 - .rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:644:in `initialize': 没有这样的文件或目录 - getaddrinfo (Errno::ENOENT)

当我尝试运行时出现此错误:rake db:migrate、rake schema:load 和 rails s。我从 Bitbucket 克隆的应用程序无法使用,客户端无法提供帮助。

我已经重新安装了 ruby​​ 和 gemset,但它没有工作。我不知道如何解决这个错误。请帮忙。是什么导致了错误,我在哪里可以找到可能帮助我修复它的信息?

Errno::ENOENT

Rails.root:/home/jacek/Programming/Rails/idea-academy 应用程序跟踪 | 框架跟踪 | 全跟踪

0 投票
1 回答
3332 浏览

c - 如果 DNS 超时,使用 getaddrinfo() 只会第一次检查 nscd 缓存

如果我得到一个初始的“名称或服务未知”(EAI_NONAME),对 getaddrinfo() 的下一次调用似乎直接进入 dns 而不是首先检查缓存(nscd 日志显示没有查找尝试,tcpdump 显示到 DNS 服务器的流量)。如果第一次调用成功获取地址,那么从那时起,所有 getaddrinfo() 调用都会按预期首先转到 nscd。

我正在为 arm linux 编译 glibc-2.13。在我的 rc.d 中,nscd 在我的守护进程之前启动。nscd 设置为禁止共享缓存,并维护主机缓存。我正在使用来自busybox(0.47)的nscd。nsswitch.conf 已设置,以便主机检查缓存/文件/dns。hosts.conf 设置为检查文件/绑定。

我的守护进程正在调用 getaddrinfo()。

我有运行 nscd 的调试日志,它们显示客户端开始读取 DNS 响应并以“Broken Pipe”错误关闭。

之后,它会显示来自其他守护进程尝试使用缓存的 GAI 尝试(所以我知道它没有被 nscd 锁定或其他任何东西),但获得 EAI_NONAME 的守护进程再也不会联系 nscd 进行缓存查找。

如果我重新启动守护程序,我会得到相同的行为,如果第一个 DNS 查询再次超时。

glibc 中有什么东西使我的守护进程到缓存的链接无效吗?有没有办法将我的守护进程重新连接到缓存而不重新启动它(类似于通过 res_init() 强制 resolv.conf 重新加载)?

0 投票
2 回答
15999 浏览

python - “getaddrinfo() 参数 1 必须是字符串或无”在 Linux 上启动 dev_appserver.py 时出错

在一段时间没有使用 App Engine 之后,我正在重新开始使用它。我正在使用 64 位 Linux Go 运行时版本 1.8.1。

我相信我正确地遵循了文档中的步骤,并且我相信我正在做过去正常工作的事情,但是我在尝试启动时遇到了这个错误dev_appserver.py

我的第一个想法是我可能使用了不正确的 Python 版本。果然,我用的是 2.7.5,而且文档明确指出 2.5 是必须的。但是,文档似乎已经过时了,因为在安装 2.5 并将我的系统设置为使用它之后,我收到了这个错误:

好的,回到 2.7.5 和我最初的错误。

我不确定这是否是dev_appserver.pyPython 代码中的错误(我猜不是,因为它已经发布了一个月),我的 Python 安装问题,或者我的系统未根据配置的其他问题谷歌的期望。

除非必要,否则我宁愿不要乱用dev_appserver.py代码,但我很乐意戳它以帮助找出问题所在。错误在第 194 行;这是第 190-195 行:

我已经确定包含方法被调用了两次。第一次host总是"127.0.0.1"而且port0。第二次是崩溃的;host总是10(一个整数,而不是字符串),并且port是一个看似随机的五位整数。

我已经尝试对 or 进行硬编码host,但随后"127.0.0.1"又出现了另一个错误。我感到头晕目眩,我怀疑我不会通过改变我不太了解的事情来解决真正的问题。谷歌搜索错误消息没有帮助。port80800

0 投票
1 回答
3031 浏览

c - 接受多个 UDP 连接的套接字控制

我正在打破我的想法,试图了解如何让我自己编写的客户端/服务器接受多个套接字连接。

连接是一个数据报(UDP),目前是基于getaddrinfo(3) man pageworks nice实现的,但是每个客户端都需要等待早期连接的处理过程。

我听说过 select,但在其手册页中说:

select() 可用于以可移植且有效的方式解决许多问题,天真的程序员试图使用线程、分叉、IPC、信号、内存共享等以更复杂的方式解决这些问题。

和更多:

Linux 特有的 epoll(7) API 提供了一个在监控大量文件描述符时比 select(2) 和 poll(2) 更高效的接口。

那么,是吗?epoll 简直比 select 好?还是视情况而定?如果取决于,取决于什么?

epoll 手册页有一个部分示例,所以我试图理解它。

现在,(在服务器上)我想,我需要一个线程来监听一个线程并写入另一个线程。但是如何控制部分消息的完成呢?如果两个客户端交错发送部分消息,如何识别?通过 sockaddr?如果它是唯一需要,我可以在没有池的情况下管理它,那么为什么要使用 epoll 呢?

谁能尝试向我解释,如何制作或在哪里了解多连接客户端-服务器 UDP 应用程序?

0 投票
1 回答
6475 浏览

c - getaddrinfo - 错误:成功

我很迷茫。

getaddrinfo用来获取给定网络主机的地址信息。

在这种情况下,我一直在使用www.cmu.edu.

我的代码工作了一段时间,但后来停止了。

奇怪的是,我显然想出了一个错误,但是当错误代码被打印出来时,它说“成功”。

以下是相关的代码:

Host 和 portNo 是包含主机(在本例中为“ www.cmu.edu”)和端口(在本例中为“80”)的字符串。

它们肯定包含正确的东西,没有多余的空格或类似的东西。

编辑:谢谢大家!我现在至少有一个适当的错误消息,即使我仍然不知道为什么事情停止工作。错误信息是:

我一直在寻找导致此错误的可能原因,但没有发现任何东西。正如我所说,这段代码在早些时候运行,并且在我没有更改任何内容的情况下就停止了。我推断它可能是我使用的端口号,但我已经更改了几次,没有任何改变。

有什么见解吗?我没有附加到端口号或除主机之外的任何东西。我只是想让它工作。

0 投票
1 回答
1022 浏览

ruby - Webdriver 在 IE10/Win7 上导致“SocketError: getaddrinfo: No such host is known”

我们有一个虚拟的 Windows 7 映像,我们的 CI 在 IE10 上运行我们的功能测试。功能测试是使用 Cucumber + Watir-Webdriver 用 Ruby 编写的。

大多数时候它工作正常,但时不时地每个测试开始失败,但出现以下异常:

在我重新启动虚拟机之前,通常不会进行进一步的测试运行,然后它会再次运行几天。

我检查了 selenium-webdriver 的代码,失败的行是:

我们没有使用代理,只能在外部 Intranet 内进行通信。不过可以上网。hosts 文件不包含 localhost 的任何条目。我们正在使用 selenium-webdriver 2.34.0。我们相同配置的Win7/IE9虚拟机没有这样的问题。