2009-04-21 210 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。