Я хочу получать запрос на определенный порт только с localhost (как от 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
Ну, перечислите все свои интерфейсы и перечислите каждый адрес каждого интерфейс - тогда проверьте, есть ли среди них нужный адрес. –