2015-08-13 55 views
0

我一直在嘗試學習C++中的套接字編程,並取得了一些基礎知識。但我明白基礎知識不是基礎知識。客戶端套接字應用程序如何識別同一臺主機上的服務器應用程序

其中的一個基本原理是關於標題中陳述的問題。比方說,我有兩個單獨的應用程序在同一臺計算機上運行。其中一個有一個服務器套接字,另一個有一個客戶端。

當服務器自動獲取IP地址時,客戶端如何找到服務器?我必須分配一個客戶端已知的IP地址嗎?在這種情況下,可能該IP地址在網絡上不可用。

或者,客戶端是否可以找到並通過某種名稱或ID連接到服務器?

+0

的主機名「 localhost'在本地解決 - 只需使用它。它默認爲127.0.0.1。 –

回答

0

除非服務器綁定到特定的不同IP地址,否則同一主機中任何服務器的IP地址都是127.0.0.1。正如@MartinJames所指出的那樣,除了某些破碎的Linux發行版之外,您可以使用'localhost'作爲主機名。

+0

「除非」?不是127.0.0.1 **總是**本地主機的地址(但它也可以**在網絡上有不同的地址)。 – Dukeling

+0

IIRC,'127.0.0.1'位於Linux的'hosts'文件中,可以進行編輯。即使Windows曾經有一個「主機」文件與該條目,但我猜它現在已被註冊。 –

+0

Aparrently,它仍然在'hosts'中:https://en.wikipedia.org/wiki/Hosts_%28file%29 –

1

讓服務器綁定到所有接口並讓客戶機按名稱查找'localhost';它的本地解析(即無需外部DNS服務),存儲在一個「主機」文件中的IP地址,並且默認設置爲127.0.0.1

谷歌「hosts文件」

+0

如果我有兩個服務器和兩個客戶端應用程序,該怎麼辦? Client1與Server1通信,Client2與Server2通信。那麼127.0.0.1將被分配給兩臺服務器?客戶端將如何區分連接哪臺服務器? – ozgur

+1

^^偵聽端口號。它需要每臺服務器都是唯一的,例如。服務器A在127.0.0.1:80上監聽,服務器B在127.0.0.1:8888上 –

+0

謝謝您的明確解釋。 – ozgur

相關問題