Если привязать сокет в Python к localhost, 8200 это доступно через http: // localhost: 8200 / . но не http: // xxxx: 8200 /
Если привязать сокет в Python к xxxx, 8200, machinename, 8200, это доступно через http: // xxxx: 8200 / и http: // machinename: 8200 / , но не http: // localhost: 8200 /
Я подумал, что localhost означает «этот компьютер», и что при его использовании «возвратится» к IP-адресу компьютера, но, похоже, это разные ips.
Всегда ли 127.0.0.1 отличается IP-адресом от IP-адреса компьютера?
Обновить:
Я понимаю, что реальные цифры разные, но что делает петля?
Например, википедия говорит, что
«указание веб-браузера на URL-адреса http://127.0.0.1/ или http: // localhost / откроет собственный веб-сайт этого компьютера»
но этот веб-сайт также будет доступен в xxxx, и предположительно будет настроен с одним сокетом в xxxx. Так как же тогда работают обе ссылки?
вывод:
Я думаю, что я наконец понимаю, что 127.0.0.1 и xxxx работают так
--127.0.0.1 ==\
>- Computer
--x.x.x.x ==/
и не
--127.0.0.1 ==\
--------------- x.x.x.x >- Computer
или
--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer
Спасибо всем за помощь
Ответы:
Ответить на ваш вопрос.
127.0.0.1 - это не просто IP-адрес, отличный от IP-адреса компьютера, но и другой интерфейс. 127.0.0.1 не должно быть видно в локальной сети. Это специальный внутренний IP-адрес для петлевого адаптера.
хххх будет вашей сетевой картой.
кстати, 'localhost' - это просто запись в вашем файле hosts, которая указывает на 127.0.0.1
Если вы привязываете сокет к 127.0.0.1:8200, то только клиенты, работающие локально, смогут получить к нему доступ и только с http://127.0.0.1:8200 или http: // localhost: 8200 (или с записью файла dns или hosts). это указывает на 127.0.0.1).
Сокет, связанный с xxxx: 8200, будет доступен только через http: // xxxx: 8200 или через запись файла DNS или хостов, которая указывает на это.
Привязка сокета к 127.0.0.1 не делает его автоматически доступным также и для интерфейса Ethernet.
Вот почему вы не можете подключиться к хххх: 8200
Вы можете привязать порт 8200 ко всем доступным интерфейсам (0.0.0.0), тогда он должен работать.
источник
Слегка неточно. Это может сделать так. Точно так же он может не открывать какой-либо веб-сайт, и даже можно отобразить другой внутренний веб-сайт, отличный от того, который вы получаете при использовании своего адреса xxxx.
127.0.0.1 указывает на вашу собственную машину, но это не значит, что она будет вести себя так же, как только достигнет вашей машины
Если вы хотите нетехническую аналогию, вы можете рассматривать их как разные двери в ваш дом.
Оба указывают на один дом, но это не одно и то же. Каждая дверь может привести вас в одну и ту же комнату, или они могут привести вас в другую комнату. Также возможно заблокировать одну дверь, а не другую.
Когда вы настраиваете веб-сайт, вы указываете, к каким адресам привязываться, и часто ответом являются все адреса. (Это эквивалентно тому, что все двери ведут в одну комнату)
Вы также можете указать веб-сайт для привязки только к одному адресу. (Это эквивалентно запиранию всех дверей, кроме одной.)
Если у вас есть два (или более) веб-сайта, вы можете привязать их к отдельным адресам. (Это эквивалентно тому, что каждая дверь входит в отдельные комнаты).
Пример того, как работают обе ссылки, на моем компьютере с Windows 7 установлен IIS, когда я захожу в IIS Manager и щелкаю правой кнопкой мыши на веб-сайте по умолчанию, он дает мне пункт меню «Редактировать привязки». Выбор, который вызывает список привязок. У меня есть только один, но для IP-адреса он имеет *, что означает, что IIS прослушивает все мои IP-адреса.
источник
127.0.0.1:5000
к сайту и привязан192.168.1.104:5000
к другому сайту. Ключ в том, чтоaddress:port
означает другую комнату (услугу) в доме (компьютер).Каждый IP-адрес в системе является независимым и может быть связан с сокетами отдельно, за исключением специального адреса 0.0.0.0, который указывает ОС привязать сокет ко всем интерфейсам.
источник