小编Nat*_*thu的帖子

C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

我在 C# 中有一个 Windows 窗体应用程序,我正在尝试获取列表中所有客户端的主机名。下面给出了 ra00l 来自此链接的代码示例:GetHostEntry 非常慢(我制作了类似的代码,但这个代码更清晰)

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;
     }
}
Run Code Online (Sandbox Code Playgroud)

当它获得网络中 Windows 机器的 IP 时,它会显示正确的主机名,前提是您输入了合理的超时时间。经过我的测试,我没有得到任何关于 android 和苹果设备的主机名的响应。比如下图就是我手头的路由器的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', '810,192.I.不要得到任何主机名。

我也尝试使用 nbtstat 但它只能获取网络中的笔记本电脑。

在我的 iPod 上尝试这个时,我确保有网络活动正在进行。这是为了保持连接处于活动状态,因为它在待机时与网络断开连接。

编辑: …

c# dns lan hostname wifi

3
推荐指数
1
解决办法
1725
查看次数

标签 统计

c# ×1

dns ×1

hostname ×1

lan ×1

wifi ×1