2017-03-16 44 views
1

我正在修改我的主機文件,以將IP地址(例如數據庫調用)更改爲我正在編寫的本地代理。什麼是POSIX調用來確定重定向套接字打開請求的預期IP?

10.1.2.3 localhost 
10.1.2.4 localhost 

我想讓代理偵聽套接字以確定打開套接字打開請求的機器。例如在我打電話的客戶中。

dbPort = 4000; 
openDatabaseConnection("10.1.2.3", dbPort); 
... 
openDatabaseConnection("10.1.2.4", dbPort); 

所以這兩個調用相同的套接字。我希望我的代理服務器在4000上偵聽,並通過指定的IP地址將到10.1.2.3的那個重定向到正確的服務器。

是否有POSIX調用來從套接字頭獲取這個?

我的問題是:什麼是POSIX調用來確定重定向套接字打開請求的預期IP?

回答

0

不,沒有辦法知道客戶端程序中使用了哪個IP地址。主機文件定義了一組別名,並且名稱/地址解析器將別名替換爲實際地址(在您的案例中爲localhost),這會使您失去有關使用的別名的所有信息。沒有「重定向」,在客戶端連接之前進行別名替換。

解決問題的最簡單方法不是通過hosts文件使用IP地址別名,而是使用不同的端口號。

您也許可以爲不同的地址添加「虛擬」接口,並讓代理服務器監聽這兩個接口上的連接。