将主机名解析为IP地址
我开发了客户端/服务器模拟应用程序。我在两台不同的Windows XP机器上部署了客户端和服务器。不知何故,客户端无法向服务器发送请求。使用IP地址将主机名解析为IP地址
-
Ping探测服务器的机器成功地从客户端:
我想下面的选项。
从服务器使用ip-address成功挂起客户机。
从两台机器检查了netstat命令行工具。服务器处于
LISTENING
模式,客户端处于SYS_SENT
模式。但它用来发送的外地址是主机名而不是IP地址。使用来自客户端的主机名拼合服务器机器失败。
成功使用来自服务器的主机名拼写客户机。
我觉得问题是当客户端尝试使用主机名连接到服务器时。
请你让我知道如何强制应用程序使用IP地址而不是主机名?有没有其他方法可以将主机名映射到IP地址?
如果没有关于网络架构的更多细节,这很难回答。有些事情需要调查:
- 客户端和/或服务器可能位于NAT设备,防火墙或类似设备之后吗?
- 是否有任何IP地址涉及“本地”地址,如192.168.x.y或10.x.y.z?
- 什么是主机名称,它们是“真实的”DNS:能够使用的名称还是更多本地和/或Windows特定的名称?
- 客户端如何查找服务器?在保存主机名的代码或配置数据中必须有一个地方,如果您想避免查找,只需尝试使用IP即可。
感谢您的回复。 IP地址是本地的,它们以192.168.x.y开头。 DNS名称对本机来说更为本地化。我为应用程序提供IP地址,但不知怎的,它在将数据发送到服务器时使用主机名(使用netstat外部地址标识)。 – Mahesh 2010-07-06 08:37:18
转到您的客户端计算机,然后键入:
nslookup server.company.com
为server.company.com
代替,当然你的服务器的真实主机名。
这应该告诉你你的客户端正在使用哪个DNS服务器(如果有的话)以及它认为问题出在哪里。
要强制一个应用程序使用IP地址,一般你只是配置它使用IP地址,而不是主机名。如果主机名是硬编码的,或者应用程序坚持使用优先于IP地址的主机名(正如其他评论似乎表明的那样),那么您可能在那里运气不佳。
但是,你可以改变,大部分机解析主机名,如在Windows-Y系统上UNIXy系统/etc/resolv.conf
和/etc/hosts
和a local hosts file的方式。
我在客户端和服务器上都试过nslookup。 客户端: ----------------- Nslookup的客户端PC 服务器:ns.murphx.net 地址:62.69.62.6 ** ns.murphx。网络无法找到acf-pc:不存在的域。 当我使用nslookup server-pc时也有同样的反应。 服务器: --------- nslookup客户端电脑 ***默认服务器不可用。 服务器:未知 地址:127.0.0.1 nslookup server-pc ***默认服务器不可用。 服务器:未知 地址:127.0.0.1 DNS请求超时。超时时间为2秒。 ***要求未知超时。 当我做了nslookup server-pc的时候有同样的反应。 – Mahesh 2010-07-06 08:46:18
您的服务器似乎将自己用作DNS服务器(但未按其外观运行DNS服务)。它可能在其本地主机文件中包含客户端详细信息。另一方面,您的客户端配置为使用ns.murphx.net作为DNS服务器,但该服务器不知道acf-pc。你需要理清你的DNS服务器应该在哪里,配置机器来使用它们,并确保你的所有机器都在该DNS中注册。或者,为了测试,我给出了关于如何设置本地DNS转换的链接,以便不需要DNS服务器。 – paxdiablo 2010-07-06 09:00:49
Windows XP具有Windows防火墙,如果配置不正确,可能会干扰网络通信。如果您拥有管理员权限,则可以通过控制面板访问Windows防火墙小程序来关闭Windows防火墙。如果您的应用程序在关闭Windows防火墙的情况下运行,那么问题可能是由于防火墙的设置所致。
我们有它运行在多台PC上使用UDP/IP通信的应用,我们一直在做实验,以便应用程序能与谁没有管理员权限的用户在PC上运行。为了让我们的应用程序在多台PC之间进行通信,我们必须使用管理员帐户来修改Windows防火墙设置。
在我们的应用中,一个PC被指定为服务器和其他的都是客户端服务器/客户端组中,并有可能在同一子网几组。
第一个变化是使用Windows防火墙小程序的例外选项卡的功能,以创建我们用来通信的端口例外。
我们正在使用主机名称查找,以便客户端可以通过使用计算机名称来定位其分配的服务器,该计算机名称由带有破折号的助记符前缀和后接分配的终端号(例如SERVER100-1)组成。这允许多台服务器及其分配的客户端在同一子网上共存。客户端使用其前缀为分配的服务器生成计算机名称,然后使用主机名称查找来发现分配的服务器的IP地址。
我们发现,除非服务器PC的Windows防火墙启用了文件和打印机共享服务端口,否则使用计算机名称(通过“系统属性”对话框的“计算机名称”选项卡分配)的主机名称查找将不起作用。
所以我们不得不做出两个改变:(1)设置为我们用于通信和(2)启用文件和打印机服务例外选项卡中允许的主机名查找端口例外。
**编辑**
您也可以找到这个Microsoft Knowledge Base article on helpful on Windows XP networking。
尝试使用tracert来解析主机名。 IE你有IP地址8.8.8.8所以你会使用; tracert 8.8.8.8
这也是相反的。 IE,你使用tracert facebook.com来获取Facebook服务器的IP地址。 – 2016-03-18 04:42:52
你在使用什么库? inet_addr可能对您有用吗? http://msdn.microsoft.com/en-us/library/ms738563(VS.85).aspx – Patrick 2010-07-06 08:31:41