问题标签 [gethostbyname]
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.
perl - Perl中的域名到IPv6地址
我有以下 Perl 代码将域名转换为 IP 地址。它在 IPv4 中运行良好。
但是,如果它是仅限 IPv6 的域名,例如“ipv6.google.com”,则它不起作用。
如何获取一行代码(首选 CORE 库)来获取 IPv6 IP 地址?
c - gethostbyname() 进程即使从不同的线程也能始终如一地解析?
我通过不同线程的 gethostbyname() 进行了 DNS 解析实验。我关闭了网络链接并在下面运行程序。输出是这样的
gethostbyname() 同时开始,但在 40 秒超时后一一结束。
然后我用 getaddrinfo() 进行了实验。看起来这个函数没有这个问题
那么,为什么我得到了这个结果,并且这种行为仅适用于 Linux 吗?
c - 从子线程调用时 getaddrinfo 和 gethostbyname 崩溃?
我们创建了一个在 Ubuntu 上运行的多线程、单核应用程序。
当我们从主进程调用时getaddrinfo
,gethostbyname
它不会崩溃。
但是,当我们从主进程和函数创建线程getaddrinfo
并gethostbyname
从创建的线程调用时,它总是崩溃。
请帮忙。请在下面找到调用堆栈:
c - gethostbyname - h_addr_list 不正确的第一位
正如标题所述,我从其中返回的数据gethostbyname
似乎有一个损坏的第一位。
这是一个简短的例子:
其中 UP 定义为
#define UP(X) (((int)X) & 0XFF)
上述代码的输出是:
-127.21.37.10
和129.21.37.10
。
现在我知道我应该使用inet_ntoa
来获取我的 char* 版本的 IP 地址。但是,有谁知道为什么我的第一个字节被破坏了?因为我从host->h_addr_list
我的第一个地址取回了一个 char**,[]
所以应该尊重第一个地址,而第二个地址[]
应该取消引用实际的 char。鉴于 char 是 1byte,为什么我必须执行按位运算符来清除损坏的位?
更令人困惑的是我得到 -127 或 129 的原因。
例如,在二进制中,一个字节的 129 应该看起来像..
1000 0001
但是,基于 -127 的值,它表明我的基础二进制值是。
1111 1111
现在,我真正感到困惑的是0XFF(1111 1111)的按位运算符如何返回129,因为我看到它应该返回255(无符号)或-127(有符号)。额外的数据来自哪里?
我在这里先向您的帮助表示感谢。
c++ - gethostbyname 函数中的 IP 地址顺序
由于我之前的问题没有得到答案,我将重新措辞。
使用 PC 名称(NetBIOS 名称)执行 gethostbyname() 时,使用什么 IP 地址顺序(如果 IP 地址绑定到一个接口)?
我有这个代码:
它在 Windows Server 2012 和 Windows Server 2008 / Windows 7 上给了我不同的结果。在我的装有 Windows 7 的家用 PC 上,使用升序:
但是,在 Windows server 2012 上,它按降序为我提供 IP 地址:
有没有办法重新排序?我在添加这些 IP 地址时尝试了 skipassource 标志,但在这种情况下它似乎不起作用。
我有第三方软件使用 gethostname() 后跟 gethostbyname() 来确定它自己的 IP 地址(它首先从列表中获取)。每次向系统添加新 IP 地址时都需要更改设置和客户端,这真的很令人沮丧。
sockets - gethostbyname 不适用于外部服务器
我正在用 C++ 编写一个应用程序来连接到我的服务器。
我正在使用gethostbyname()
. 当我将主机名指定为“localhost”时,它工作正常。但如果我尝试任何其他网站,如 google.com,它会失败。
谁能告诉我可能出了什么问题。
我可以通过浏览器访问这些网站。注意:我在浏览器中设置了代理。
thr 代理是否导致问题gethostbyname()
?如果是,我如何在我的 C++ 代码中提及代理?
c++ - 通过指针传递 char 并获得不同的结果
我正在使用 gethostname 来获取我正在使用的计算机的名称。在我的主要功能中,我调用它并让 UBU24-PS-23 成为我计算机的正确名称。然后我调用一个函数,它使用 gethostname,我得到一个不同的字符串。在我的主函数中 gethostname 返回 0 所以它可以工作,在我的函数中它返回 -1 所以它失败了。任何想法为什么?这是我的代码
c - gethostbyname 缓冲区溢出
我研究了 GHOST 或 CVE-2015-0235 漏洞。我发现我的系统很脆弱。我写了一个测试程序来看看这个效果。但我什么都看不到。听到是我的尝试:
我不知道发生了什么?gethostbyname()、gethostbyname_r()、gethostbyname2() 或 gethostbyname2_r 有什么区别。我对此有很多研究。有谁能够帮我?谢谢。
node.js - 如果 DNS 解析正在进行,Node.js 进程会挂在 SIGTERM 上
我在 Linux(Ubuntu 4.10、FC20 等)上使用节点 10.38。
我在启动中有一些代码,如下所示:
在这个过程的其他地方,我有这样的代码:
很多时候,如果你向进程发送 SIGTERM,节点不会退出。只要解析DNS,它就会挂起。有时,如果 DNS 服务器没有响应,可能需要 5 分钟才能退出。如果您此时获取 GDB 堆栈跟踪,您会看到这样的堆栈跟踪。如果您附加一个 gdb 调试器,您会看到它一直在尝试解析我们尝试解析的主机名。
我会认为 gethostbyname 可以被信号中断。有人可以对此有所了解吗?
c - gethostbyname 双网络接口,选择使用哪一个
我有一个需要连接到服务器并发送 tcp 有效负载并等待响应的 c 程序。这适用于正常使用,但由于我有两个不同的网络接口,让我们在运行程序的计算机上调用它们 if0 和 if1,有时其中一个网络接口无法转发流量。不幸的是,这是我无法改变的事实。
由于操作系统无法帮助我将数据路由到正确的接口,因此为了优雅地处理此问题,我使用 if0 和 if1 发送有效负载。我创建了一个套接字,并使用 bind 将套接字绑定到特定接口,我对 if0 和 if1 都这样做。
不幸的是,这并没有按我的计划工作,因为我用来解析主机名的 gethostbyname 当然只使用了一个接口。不幸的是,我无法在这个特定问题上更改操作系统配置,我需要绕过操作系统中的任何逻辑并确保流量进入特定接口。
我有以下用于地址查找的代码:
有什么方法可以让我使用特定的接口来制作 gethostbyname 吗?我想尝试使用 gethostbyname 同时使用 if0 和 if1 并使用任何可接受的结果。
我是否需要制作自己的 DNS 查找实现并为此使用套接字,或者我可以使用 posix c 中的某些东西?或者也许有一个我可以使用的图书馆?