将主机名解析为IP地址

时间:2010-07-06 08:25:32

标签: windows networking ip-address

我开发了一个客户端/服务器模拟应用程序。我在两台不同的Windows XP计算机上部署了客户端和服务器。不知何故,客户端无法向服务器发送请求。

我尝试了以下选项:

  1. 使用ip-address从客户端成功ping通服务器计算机。

  2. 使用ip-address从服务器成功ping通客户端计算机。

  3. 从两台计算机上检查netstat命令行工具。服务器处于LISTENING模式,客户端处于SYS_SENT模式。但它用来发送的外地址是主机名而不是ip地址。

  4. 在客户端使用主机名时,ping服务器计算机失败。

  5. 使用来自服务器的主机名成功ping通客户端计算机。

  6. 我觉得问题是当客户端尝试使用主机名连接到服务器时。

    您能否告诉我如何强制应用程序使用IP地址而不是主机名?有没有其他方法将主机名映射到IP地址?

5 个答案:

答案 0 :(得分:50)

转到您的客户端计算机并输入:

nslookup server.company.com

当然,将服务器的真实主机名替换为server.company.com

这应该告诉你客户端正在使用哪个DNS服务器(如果有的话)以及它认为问题与名称的关系。

强制应用程序使用IP地址,通常只需将其配置为使用IP地址而不是主机名。如果主机名是硬编码的,或者应用程序坚持使用主机名而不是IP地址(正如您的其他评论似乎表明的那样),那么您可能在那里运气不好。

但是,您可以更改大多数计算机解析主机名的方式,例如UNIXy系统上的/etc/resolv.conf/etc/hosts以及Windows-y系统上的a local hosts file

答案 1 :(得分:4)

尝试使用tracert解析主机名。 IE你有IP地址8.8.8.8所以你会使用; tracert 8.8.8.8

答案 2 :(得分:0)

如果没有关于网络架构的更多细节,这很难回答。需要调查的一些事情是:

  • 客户端和/或服务器是否可能位于NAT设备,防火墙或类似设备后面?
  • 是否有任何IP地址涉及“本地”地址,例如192.168.x.y或10.x.y.z?
  • 主机名是什么,它们是“真正的”DNS:有能力的名称还是更本地化和/或特定于Windows的东西?
  • 客户端如何查找服务器?代码或配置数据中必须有一个包含主机名的位置,如果您想避免查找,只需尝试在那里使用IP。

答案 3 :(得分:0)

您可以使用C函数getaddrinfo()来获取数字地址 - 包括ipv4和ipv6。 请参阅示例代码here

答案 4 :(得分:0)

Windows XP具有Windows防火墙,如果配置不正确,可能会干扰网络流量。如果您具有管理员权限,则可以通过“控制面板”访问Windows防火墙小程序来关闭Windows防火墙。如果您的应用程序在关闭Windows防火墙的情况下工作,那么问题可能是防火墙的设置。

我们有一个应用程序可以运行在使用UDP / IP进行通信的多台PC上,我们一直在进行实验,以便应用程序可以在没有管理员权限的用户的PC上运行。为了使我们的应用程序能够在多台PC之间进行通信,我们必须使用管理员帐户来修改Windows防火墙设置。

在我们的应用程序中,一台PC被指定为服务器,其他PC是服务器/客户端组中的客户端,并且同一子网上可能有多个组。

第一个更改是使用Windows防火墙小程序的“例外”选项卡的功能为我们用于通信的端口创建例外。

我们正在使用主机名查找,以便客户端可以使用计算机名称找到其分配的服务器,该名称由助记符前缀和短划线后跟分配的终端号(例如SERVER100-1)组成。这允许多个服务器及其分配的客户端在同一子网上共存。客户端使用其前缀为分配的服务器生成计算机名称,然后使用主机名查找来发现分配的服务器的IP地址。

我们发现,除非服务器PC的Windows防火墙启用了文件和打印机共享服务端口,否则使用计算机名称(通过“系统属性”对话框的“计算机名”选项卡分配)的主机名查找将不起作用。

因此我们必须进行两项更改:(1)为我们用于通信的端口设置例外,以及(2)在“例外”选项卡中启用“文件和打印机服务”以允许主机名查找。

**编辑**

您也可以找到Microsoft Knowledge Base article on helpful on Windows XP networking

看到这个article on NETBIOS name resolution in Windows