我有一臺運行在同一臺Linux機器上的服務器(A)和一個用C語言編寫的客戶機(B)。 服務器將端口綁定到INADDR_ANY,客戶端將另一個端口綁定到INADDR_ANY。 當其他客戶端(C),這是另一 Linux機器上運行,連接到服務器,我希望服務器獲取客戶端B的IP地址,並將其發送給客戶端C.防止從getpeername()返回127.0.0.1
當我使用getpeername()從服務器,它返回「127.0.0.1」這是正確的,但我不能發送這個地址給客戶端C-它將無法連接到客戶端B與該地址。
有什麼聰明的方法來獲得客戶端B的實際IP? 如果稍微容易些,我可以讓每個客戶端發送它的IP給服務器。
謝謝!
mux- getifaddrs()的問題是一臺計算機可能有多個IP地址,所以我只是不能捕捉到第一個不是127.0.0.1的IP。 – bomba6
@ bomba6我認爲任何人都會這樣做,因爲服務器綁定到INADDR_ANY,它會監聽所有接口,以便接收數據包。 – iabdalkader
感謝您的澄清。但客戶端C位於另一個網絡上的另一臺計算機上。我沒有冒險返回「內部」IP地址? – bomba6