C# - Dns.GetHostEntry:主机名为空或不正确

时间:2017-06-25 04:53:09

标签: c# dns network-programming

我的电脑连接到局域网,网关是80.0.0.1 当我使用这段代码时:

<li>

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

编辑: 我将局域网改为9.0.0.1进行测试。 Dns.GetHostEntry扔了#34;没有这样的主人知道&#34;例外。它无法获得AP的名称。和Android设备连接到局域网。有解决方案吗 注意:高级IP扫描程序也无法获取设备的名称。它显示每个设备的IP作为名称。

2 个答案:

答案 0 :(得分:0)

如果您想获得本地主机,为什么不为本地主机创建IPHostEntry对象呢?

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

答案 1 :(得分:0)

适用于我的解决方案: 1-我将LAN的网关IP更改为10.0.1.1以避免冲突。 2-我使用DNS.GetHostEntry获取名称。 3-如果名称为空(在某些AP型号的局域网中发生)或等于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 希望能帮助到你。 感谢。