2009-04-21 175 views
0

我们编写了一个客户端 - 服务器程序。当我们通过调用gethostbyname(127.0.0.1)在不同终端的同一台计算机上运行客户端和服务器时,程序运行良好。我们必须在不同的机器间进行通信。所以我的问题是,如何确定另一台机器(服务器)的IP,以及如何找出自己机器的IP。它是否仅仅是我们所希望的东西?如何获取服务器的主机名和自己的机器?客户端 - 服务器通信

感谢

回答

0

目前尚不清楚,你上,但在Unix/Linux上,你可以发现分配给该接口的系统使用ifconfig命令对IP地址的工作是什么平台(可能需要以root身份去这通常在sbin文件夹中找到),在Windows上,ipconfig将为您提供相同的信息。

理想情况下,您需要在网络上设置域名解析并为服务器设置一个“名称”,即server.mydomain.com,然后您可以使用gethostbyname(“server.mydomain.com”)。欲了解更多关于域名服务(DNS)的信息,你可能会做得比从这里开始更糟糕:http://en.wikipedia.org/wiki/Domain_name_system

+0

我正在unix环境中工作。 我们连接的通讯线连接到hub。我们应该直接连接两台机器还是以上的连接都可以工作?我们的程序只是用c语言编写的。 – mawia 2009-04-21 14:38:31

0

你不能以某种神奇的方式获得另一台机器的IP;您必须知道它或在网络应用程序中开发某种类型的广播协议,其中服务器或客户端广播其IP。

获取您自己的IP取决于您的平台和您使用的语言。

0

如果这是客户端/服务器环境,那么客户端需要知道服务器地址。

如果您使用的是gethostbyname,那么实际支持的名称解析系统(DNS,NIS等)将因操作系统和系统配置而异。

最常见的配置是使用DNS。在这种情况下,值得注意的是,服务器无法轻松地在网络上发现自己的名字(或名称本身)。这是因为客户端将使用的命名服务在服务器外部。服务器具有关于其主机名及其解析器默认域的本地概念,但它们不一定是DNS从外部映射到服务器IP地址的FQDN。