- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C# 中有一个 Windows 窗体应用程序,我正在尝试获取列表中所有客户端的主机名。下面给出的是来自此链接的 ra00l 的代码示例:GetHostEntry is very slow (我有一个类似的代码,但这个更干净)
private delegate IPHostEntry GetHostEntryHandler(string ip);
public string GetReverseDNS(string ip, int timeout)
{
try
{
GetHostEntryHandler callback = new GetHostEntryHandler(Dns.GetHostEntry);
IAsyncResult result = callback.BeginInvoke(ip,null,null);
if (result.AsyncWaitHandle.WaitOne(timeout, false))
{
return callback.EndInvoke(result).HostName;
}
else
{
return ip;
}
}
catch(Exception)
{
return ip;
}
}
当它获得网络中 Windows 机器的 IP 时,它会显示正确的主机名,前提是您输入了合理的超时时间。在我进行测试之后,我没有得到任何关于 android 和 apple 设备主机名的响应。比如下图就是我手上的路由器的DHCP Client List。它显示安卓、苹果和笔记本电脑设备。我正在使用笔记本电脑“Nathu-Laptop”,其 IP 地址为“192.168.1.106”。
如果我在 C# 函数中输入“192.168.1.105”,结果是“Nandwani-PC”,但如果我输入“192.168.1.103”、“192.168.1.104”、“192.168.1.101”、“192.168.1.100” ', 我没有得到任何主机名。
我也尝试过使用 nbtstat,但它只能获取网络中的笔记本电脑。
在我的 iPod 上试用时,我确保有网络事件正在进行。这是为了保持连接处于事件状态,因为它在待机时会断开与网络的连接。
编辑:
所以我发现 DNS.GetHostEntry 调用了 getaddrinfo如果启用了 IPv6,否则,请调用 gethostbyaddr并且这些函数可以从 \System32\drivers\etc\hosts
或 NETBIOS 访问数据。问题是 NETBIOS 是遗留的,对吗?但是对于移动设备呢?
最佳答案
关于 NetBIOS:
为了回答您有关 NetBIOS 和网络名称解析的具体问题,我将提供更多详细信息。如果您的网络上没有运行 dns 服务器,名称解析将仅依赖于 NetBIOS 解析。 It is a standard并在多个操作系统上实现。但是,速度不是很快。
即使我们老了,我们也不是过去的遗产和过时的
您可以查看 Microsoft support Windows 上的名称解析方式,NetBIOS 是最后一种。
但是,NetBios 名称解析并不总是在所有移动平台(例如取决于 Android 版本)上都能正常运行(如 this bug on Android which was fixed in 2014 )。如果你想提高性能,我建议你在网络中安装一个 DNS 服务器。
你试过了吗ping -a <IP address>
或 nslookup <IP address>
检查结果是否符合您的预期?
如果您的问题仍然存在,那么您可以通过上述链接调查 .Net 实现。您也可以查看 a more up to date version of .Net DNS implementation here
关于C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31849285/
我最近从 .NET v3.5 切换到 v4.0 Client Profile,第一次运行 GetHostEntry() 时遇到问题。 tcpClient.SocketInfo.So
我一直试图找到使用 GetHostAddresses 或 GetHostEntry 的正确位置。我通过阅读这篇文章 (http://msdn.microsoft.com/en-us/library/m
我来了from powershell 到 Mono: thufir@dur:~/mono$ thufir@dur:~/mono$ ls hello.cs thufir@dur:~/mono$ thuf
我只是想知道是否会出现主机名可以成功解析但返回的 hostEntry.AddressList 为空的情况。 目前我正在做这样的事情: IPHostEntry hostEntry = Dns.GetHo
关于 MSDN它提到 GetHostByName 已过时。替换为 GetHostEntry。他们有什么区别? 最佳答案 看起来 GetHostEntry 做了更多的错误检查并且还支持 Network
在新的 Windows 2012 服务器上 Dns.GetHostEntry Method (IPAddress)返回本地指定的主机名,但不是 DNS 已知的 IP 地址名称。 IP 地址是新服务器的
想知道是否有人可以帮助我。我对 C# 的了解不多,但对于我想做的事情来说它很容易。 我正在制作一个小应用程序,它将接收我网络上的主机名,然后返回完整的 ipaddress(ipv4) ....从那里我
我在 C# 中有一个 Windows 窗体应用程序,我正在尝试获取列表中所有客户端的主机名。下面给出的是来自此链接的 ra00l 的代码示例:GetHostEntry is very slow (我有
我有使用 Dns.GetHostEntry(hostNameOrIp) 的代码,我想检查一次该函数返回真实值的场景但在某个时间(当我决定) 此函数抛出异常。 目前我在 visual studio 20
我在文档中找不到任何关于这实际上做了什么的适当描述。 它是否检查 A 记录或 CNAME 记录或两者是否存在? 我的理解是,在 .NET 4 中,如果主机不存在,则会抛出 SocketExceptio
这个问题可能突出了我对网络原理缺乏理解,而不是编程问题。 我正在使用以下命令查找主机名 Dns.GetHostEntry 这会返回一个 IPHostEntry 给我,它有一个 AddressList
在 .NET 中,您可以调用 Dns.GetHostEntry(hostname) 这使用网络设置中的 DNS 条目进行 DNS 查找,但我想指定 DNS 服务器 8.8.8.8 进行查找,而不更改
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
假设在同一个网络中有两台计算机,名为 com1 和 com2。 在 com1 上,如果我调用 Dns.GetHostEntry("com2") 果然,它只返回 1 个 IP 地址,例如 192.168
我可以使用 Dns.GetHostEntry("google.com") 获取 uri 的 IP 地址,如“google.com”,例如: var ip = Dns.GetHostEn
我更改了我的代码,因此它不再使用已弃用的: Dns.GetHostByAddress(ipaddress); 使用: Dns.GetHostEntry(ipaddress); 问题是我从 Dns.Ge
我试图通过传入 IP 地址来获取主机名。我使用以下代码。 System.Net.Dns.GetHostEntry("192.168.x.x").HostName 对于某些主机,上面的代码正确返回了主机
我这里有一些代码在 IPv4 机器上运行良好,但在我们的构建服务器(IPv6)上它失败了。简而言之: IPHostEntry ipHostEntry = Dns.GetHostEntry(string
这台机器的 FQDN: thufir@dur:~$ thufir@dur:~$ hostname --fqdn dur.bounceme.net thufir@dur:~$ 是的...正在工作 dir
这是通过 USB 连接到我的计算机的手持设备,使用 Compact Framework: 当我调用 Dns.GetHostEntry("") 或 Dns.GetHostEntry(IPAddress.
我是一名优秀的程序员,十分优秀!