我希望能夠僅從本地主機(從127.0.0.1
和my_local_ip
)獲取特定端口的請求;如何只允許來自本地主機的TCP連接
我試過如下:
int localhost = (127 << 24) + 1; // 127.0.0.1
sock_address.sin_addr.s_addr = htonl(localhost);
這讓我只能用127.0.0.1
而不是從實際的本地IP連接。 我也試過:
char hostName[128] = "";
struct hostent *pHost = 0;
gethostname(hostName, sizeof(hostName));
pHost = gethostbyname(hostName);
memcpy(&sock_address.sin_addr, pHost->h_addr_list[0], pHost->h_length);
到那個我不是能夠連接與127.0.0.1
,我能夠與當地的IP連接,但遠程請求也回答
我在做什麼錯?有沒有其他方法?
謝謝!
你是什麼意思「真正的IP」?你的機器可以有很多接口,每個接口可以有很多IP地址。實際上,127.0.0.1 *是*其中一個接口的地址之一。這與您的任何其他地址的「實際IP」一樣多。 –
謝謝@Kerrek SB - 好吧,我的意思是,我希望能夠接受任何接口上要求我的機器上,但只能從我的機器,並阻止遠程連接 – kande
好,枚舉所有的接口,並列舉每個的每個地址接口 - 然後檢查所需的地址是否在其中。 –