如何在没有单个网络查询的情况下发现本地Windows框的所有IP地址和主机名?

时间:2011-02-01 08:18:22

标签: .net windows networking

这个问题与Given a Uri value how can one check whether it refers the local machine?有关,但没有看到令人满意的解决方案。

我的需求很简单,我想发现IP地址(如果有多个网卡,可能不止一个)以及本地计算机的主机名,而不进行任何网络往返。仅表示出现在本地表中的信息,没有DNS查询。顺便说一下,还必须发现域名。

第二个想法,我可以使用以下方法:

bool IsLocalAddress(string address);

接受IP,主机名或主机+域名,如果地址引用本地计算机,则返回true。同样,请考虑多个NIC和域。

提前多多感谢。

P.S。

我更喜欢C#代码示例。

2 个答案:

答案 0 :(得分:1)

有一个看起来很有趣的样本here

答案 1 :(得分:0)

使用Python你可以这样做:

import socket
socket.gethostname() # hostname
socket.gethostbyname(gethostname())  # host ip addr

一些谷歌搜索显示Windows API包含两个相同名称的函数,因此任何语言都可以使用类似的代码。

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