Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在不进行单一网络查询的情况下发现本地Windows机箱的所有IP地址和主机名?_.net_Windows_Networking - Fatal编程技术网

.net 如何在不进行单一网络查询的情况下发现本地Windows机箱的所有IP地址和主机名?

.net 如何在不进行单一网络查询的情况下发现本地Windows机箱的所有IP地址和主机名?,.net,windows,networking,.net,Windows,Networking,这一问题涉及到一个没有看到令人满意的解决办法的国家 我的需求很简单,我希望在不进行任何网络往返的情况下发现本地计算机的IP地址(如果有多个网卡,则可能不止一个)以及主机名。这意味着只有本地表中显示的信息,没有DNS查询。顺便说一句,域名也必须被发现 再想一想,我可以采用以下方法: bool IsLocalAddress(string address); 它接受IP、主机名或主机+域名,并在地址指向本地计算机时返回true。同样,请考虑多个NIC和域 先谢谢你 附言 我更喜欢C代码示例。使用Py

这一问题涉及到一个没有看到令人满意的解决办法的国家

我的需求很简单,我希望在不进行任何网络往返的情况下发现本地计算机的IP地址(如果有多个网卡,则可能不止一个)以及主机名。这意味着只有本地表中显示的信息,没有DNS查询。顺便说一句,域名也必须被发现

再想一想,我可以采用以下方法:

bool IsLocalAddress(string address);
它接受IP、主机名或主机+域名,并在地址指向本地计算机时返回true。同样,请考虑多个NIC和域

先谢谢你

附言


我更喜欢C代码示例。

使用Python可以做到:

import socket
socket.gethostname() # hostname
socket.gethostbyname(gethostname())  # host ip addr
谷歌搜索显示,WindowsAPI包含两个同名函数,因此任何语言都可以使用类似的代码


如果您正在编写特定于Windows的代码,则应使用WMI类,例如,该类提供有关多个接口和每个接口的多个ip地址的信息

有一个示例看起来很有趣。

它如何回答多个NIC的问题?如果机器有多个网卡,则有多个IP地址,可能有多个主机名。+1用于链路。但是,我是否可以在不进行任何网络查询的情况下将给定的IP转换为相应的主机名?我猜我应该是,因为IP是本地的,但我不确定。此外,还有域名问题。一个地址可以是主机+域,它仍然可以引用本地计算机。找到与.NET等效的-更好的是-Dns.GetHostAddresses(string.Empty)一旦您将Dns引入其中,所有赌注都将取消。计算机无法知道可能为其注册的所有DNS条目。对,但计算机本身应该有一个本地缓存。我想知道是否可以检查这个缓存。