【问题标题】:How to resolve the host / machine name with an IP address on windows phone如何在windows phone上用IP地址解析主机/机器名
【发布时间】:2013-11-19 03:08:37
【问题描述】:

有人知道它是否可以使用本地 IP 地址恢复(主机名/机器名)吗?我知道解析反向“主机名-> ip”与DeviceNetworkInformation.ResolveHostNameAsync (endpoint, OnNameResolved, null). 完美配合

是否可以反过来做同样的事情?给定本地计算机的 IP 并检索其主机名?一千多谢

这是我的代码,但它不起作用,主机总是像 ip 一样被称为 "192.168.1.5" 。它应该返回 "computer0001"

DeviceNetworkInformation.ResolveHostNameAsync("192.168.1.5", OnNameResolved, null);

private void OnNameResolved(NameResolutionResult result)
{
     IPEndPoint[] endpoints = result.IPEndPoints;
     if (endpoints != null)
     {
         if (endpoints.Length > 0)
         {
             //Host always return ip adress and not the machine name
             host = endpoints[0].ToString();
         }
     }
 }

【问题讨论】:

  • 你在模拟器上测试这段代码吗?
  • 是的,我已经在模拟器和真正的设备(lumia 925)上试用过

标签: c# networking windows-phone-8 dns windows-phone


【解决方案1】:

不确定 Windows Phone 上是否有用于此目的的特定 API。

我建议你查看similar question 'DNS lookup from custom DNS server in c#'

如果你可以只使用 WP8,那么你应该学习这部分 MSDN -Supported Win32 APIs for Windows Phone 8

例如,getpeername function 可能会返回您正在寻找的信息。或者您可以创建新的HostName 对象,在那里传递 IP 地址并尝试读取它的 DisplayName、CanonicalName 或 RawName 属性。

确保您同时使用模拟器和真实设备进行测试,因为 WP8 模拟器的网络配置有点复杂。

如果您在任务中取得任何成功,如果您能更新我们,那就太好了。

【讨论】:

  • 谢谢,是的,我的应用程序只针对 WP8,所以我今晚会尝试,如果您的解决方案使用“getpeername 函数”
  • 抱歉,您确定 [getpeername function] 将主机返回给我吗?我不这么认为.. 它只返回 0 或 1 ->> 如果没有发生错误,getpeername 返回零。否则返回 SOCKET_ERROR 的值,调用获取具体的错误码
  • int getpeername(In SOCKET s, Out struct sockaddr *name, Inout int *namelen);跨度>
  • 不,我不确定,我只是猜测并指点你看看 Win32 API
  • 好的,谢谢,我会检查他们是否有另一个 win32 api 函数来做这件事,但是 getpeername 函数我确定只返回一个整数而不是主机名
猜你喜欢
  • 2015-10-21
  • 2013-03-25
  • 2012-08-04
  • 2019-09-29
  • 2011-03-12
  • 2014-02-26
  • 2014-10-13
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多