我有一个多宿主 Windows 10,我希望我的应用程序在其指定的特定 IP 上打开一个服务器套接字主机名。
我的机器主机名是MY-PC
,它有一个公共 IP192.0.0.2/24
和一个“直接”IP 192.2.2.2/24
(直接连接到另一台计算机)。两者都在控制面板中的 Windows 网络适配器页面中配置。
未配置 DNS。我的 hosts 文件如下所示:
127.0.0.1 localhost
192.2.2.2 MY-PC
192.2.2.1 DIRECT-PC
当我尝试 ping 我的主机名时(完全禁用 IPv6 后):
> ping MY-PC
Pinging MY-PC [192.0.0.2] with 32 bytes of data:
Reply from 192.0.0.2: time<1ms
...
奇怪的是,相同的设置(主机文件/网络适配器配置)在另一台计算机上按预期工作(但只有六台中的一台)。
我如何强制从主机名监听特定 IP?(这是程序接收的配置中的全局参数)。
我已经检查过了相关问题但答案是关于完全禁用IPv6。
答案1
请阅读本文,您可以在那里找到有关 Windows 中的名称解析的更多信息。以下是对您问题的回答:
主机名解析一般采用以下顺序:
- 客户端检查查询的名称是否是它自己的。
- 然后,客户端搜索本地 Hosts 文件、存储在本地计算机上的 IP 地址和名称列表。
- 查询域名系统 (DNS) 服务器。
- 如果名称仍未解析,则使用 NetBIOS 名称解析顺序作为备份。可以通过配置客户端的 NetBIOS 节点类型来更改此顺序。
Windows 客户端将尝试每一种方法,直到成功解析名称或用尽这些方法。