【问题标题】:C# - Dns.GetHostEntry: host name is empty or not correctC# - Dns.GetHostEntry:主机名为空或不正确
【发布时间】:2017-06-25 04:53:09
【问题描述】:

我的电脑连接到网关为 80.0.0.1 的 LAN 当我使用此代码时:

IPHostEntry hostEntry = Dns.GetHostEntry("80.0.0.1");
Var name = hostEntry.HostName;

它给了我一个全球 Internet 域的名称 (hari-core-2a-xe-800-0.network.virginmedia.net),而不是我的本地主机的名称。 如何获得本地主机的正确名称。 我知道有像 10.0.x.x 这样的保留域可以与 LAN 一起使用,但我不想更改 LAN 网关。如果我可以在我的 LAN 中更改它,那么如果我的应用程序的所有用户有类似的冲突,我就不能强制他们更改他们的用户。 有什么解决办法吗?

编辑: 我将 LAN 更改为 9.0.0.1 进行测试。 Dns.GetHostEntry 抛出“No such host is known”异常。它无法获取 AP 的名称。和连接到局域网的安卓设备。有什么解决办法吗? 注意:Advanced IP Scanner 也无法获取设备的名称。它将每个设备的 IP 显示为名称。

【问题讨论】:

  • 您的公司网络中似乎正在使用组策略。本地主机在 windows 主机文件中定义:C:\Windows\System32\Drivers\etc\hosts。主机表是一个数组,因此您通常使用: IPAddress ipAddress = hostEntry.AddressList[0];
  • 我不这么认为。我将 LAN 更改为 9.0.0.1 进行测试。 Dns.GetHostEntry 抛出“No such host is known”异常。它无法获取 AP 的名称。和连接到局域网的安卓设备。有什么解决办法吗?注意:Advanced IP Scanner 也无法获取设备的名称。它将每个设备的 IP 显示为名称。 .
  • 在 Dns.GetHostEntry() 方法中使用计算机名而不是 IP。您网络中的组策略未设置为按 IP 查找设备。 IP 需要正确设置 PC 中的路由表,包括掩码。按名称将 DCHP 服务器路由到正确设置的设备的连接。
  • 我认为 TL-WR840N 可能是问题所在。它如何阻止 DNS 获得正确的名称。
  • 找到手册:static.tp-link.com/res/down/doc/TL-WR840N_V2_UG.pdf。我有 5 年的工作来配置 Intranet 网络。了解所有问题、术语和规范。仍然无法弄清楚如何配置这些路由器将所有选项。最好与供应商支持联系。请参阅手册:附录 A:FAQ 第 89 页启用的 AP 隔离第 42-43 页 DHCP 设置第 45 页 ARP 列表第 75 页

标签: c# dns network-programming


【解决方案1】:

如果你想得到你的本地主机,那你为什么不为本地主机创建IPHostEntry对象呢?

IPHostEntry hostEntry = Dns.GetHostEntry("127.0.0.1");

【讨论】:

  • 对不起,如果我不能解释它。 80.0.0.1 是我的 PC 连接的 AP 的网关。由于与 Internet 域冲突,我为该 LAN 中的所有其他设备命名错误。
  • 更新:我将 LAN 更改为 9.0.0.1 进行测试。 Dns.GetHostEntry 抛出“No such host is known”异常。它无法获取 AP 的名称。和连接到局域网的安卓设备。有什么解决办法吗?注意:Advanced IP Scanner 也无法获取设备的名称。它将每个设备的 IP 显示为名称。
【解决方案2】:

适合我的解决方案: 1- 我将 LAN 的网关 IP 更改为 10.0.1.1 以避免冲突。 2-我使用 DNS.GetHostEntry 来获取名称。 3- 如果名称为空(在某些 AP 型号的 LAN 中发生)或等于 IP 地址,我想这是 AP 或路由器的 IP。我将尝试连接到网页 http:\[ip] 并使用网页的标题作为名称(标题将是设备型号)。 这适用于显示登录页面的设备。如果设备想要在请求中提供用户名和密码,则会发生 WebException,我可以获得包含字符串的 response.Headers["WWW-Authenticate"]:Basic realm="X",其中 X 是一个字符串描述设备。 4- 如果名称仍然为空,我将 MAC 地址显示为名称。

您可以在 IPScanner Applicationm 的 PingThread 类中找到代码(C# 和 VB.NET): http://www.mediafire.com/file/1fku7fz7ytr8p59/IPScanner.zip 希望能帮助到你。 谢谢。

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 2013-09-15
    • 2020-09-19
    • 2015-06-03
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多