这个问题与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#代码示例。
答案 0 :(得分:1)
有一个看起来很有趣的样本here。
答案 1 :(得分:0)
使用Python你可以这样做:
import socket
socket.gethostname() # hostname
socket.gethostbyname(gethostname()) # host ip addr
一些谷歌搜索显示Windows API包含两个相同名称的函数,因此任何语言都可以使用类似的代码。
如果您正在编写Windows特定代码,那么您应该使用WMI类,例如Win32_NetworkAdapterConfiguration提供有关多个接口和每个接口多个IP地址的信息。