2015-10-05 238 views
0

如何獲取我的服務器所連接的客戶端的IP地址? 這是我如何接受傳入的客戶:獲取C端口客戶端的IP地址

newsockfd = accept(sockfd, (struct sockaddr*)&clt_addr, &addrlen); 

我試過如下:

printf("ip is: %s\n", inet_ntoa(clt_addr.sin_addr)); 

但我正在逐漸127.0.0.1這是不是我的IP地址。可以用我的本地主機來測試我的客戶端和服務器嗎?

+2

就localhost而言,127.0.0.1是你的ip地址。 – user3791372

+0

所以如果我不使用本地主機,我會得到一個實際的IP地址? – coder4lyf

+0

@Rachelle是的,如果你的應用程序託管在網絡上,並且有人訪問它,你會得到實際的IP。但是,現在您通過本地主機訪問它。您的IP將是127.0.0.1 –

回答

2

難道它與我使用本地主機來測試我的客戶端和服務器?

是的。如果您連接到本地主機上的服務器,客戶端也將是本地主機。這個連接不是通過Internet發生的,沒有涉及網絡硬件,客戶端數據包將來自本地主機。這被稱爲loopback並且完全以軟件形式出現。

如果客戶端使用服務器的外部IP地址連接到服務器,則它必須通過外部路由進行連接,因此需要可路由的IP地址。例如,我可以連接到本地主機上的服務器,但我無法使用可路由的IP地址,因爲我的路由器阻止了傳入的連接。