Python serverhosthost vs 0.0.0.0? [Дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

181
задан Ciel 26 December 2013 в 05:33
поделиться

2 ответа

127.0.0.1 обычно является IP-адресом, назначенным для интерфейса «loopback» или «local-only». Это «поддельный» сетевой адаптер, который может обмениваться данными только с одним и тем же хостом. Он часто используется, когда вы хотите, чтобы приложение, поддерживающее сеть, обслуживало клиентов только на одном хосте. Процесс, который прослушивает 127.0.0.1 для соединений, будет получать только локальные соединения в этом сокете.

«localhost» обычно является именем хоста для 127.0.0.1 IP-адреса. Обычно он устанавливается в /etc/hosts (или эквивалент Windows с именем «hosts» где-то под %WINDIR%). Вы можете использовать его так же, как и любое другое имя хоста - попробуйте «ping localhost», чтобы увидеть, как он разрешает 127.0.0.1.

0.0.0.0 имеет пару различных значений, но в этом контексте, когда сервер предлагается прослушать 0.0.0.0, что означает «слушать все доступные сетевые интерфейсы». Адаптер loopback с IP-адресом 127.0.0.1 с точки зрения серверного процесса выглядит так же, как и любой другой сетевой адаптер на компьютере, поэтому сервер, которому нужно слушать 0.0.0.0, также будет принимать соединения на этом интерфейсе.

Это, надеюсь, ответит на IP-вопрос вашего вопроса. Я не знаком с Jekyll или Vagrant, но я предполагаю, что перенаправление вашего порта 8080 => 4000 каким-то образом связано с определенным сетевым адаптером, поэтому оно не находится на пути, когда вы локально подключаетесь к 127.0.0.1

268
ответ дан rav_kr 18 August 2018 в 19:58
поделиться
  • 1
    Hmm, ping localhost, похоже, работает на Windows даже без файла hosts, указывающего 127.0.0.1 на localhost. – Pacerier 23 July 2015 в 14:01
  • 2
    Согласитесь с Pacerier. По крайней мере, в Windows localhost ведет себя как 0.0.0.0 (не 127.0.0.1) по умолчанию – drodsou 30 December 2016 в 21:05
  • 3
    «Это в основном верно, за исключением вашего описания привязки к 0.0.0.0. Это не связано с каждым доступным сетевым интерфейсом , как вы описали, а скорее привязывается ко всем адресам . В стеках TCP это называется INADDR_ANY - из удаленного ответа @strangemonad. – Piotr Dobrogost 18 January 2017 в 14:09

В текущей версии Jekyll по умолчанию используется http://127.0.0.1:4000/ . Это хорошо, если вы подключены к сети, но не хотите, чтобы кто-либо еще обращался к вашему приложению.

Однако может случиться так, что вы хотите увидеть, как ваше приложение работает на мобильном телефоне или с другого ноутбука / компьютера.

В этом случае вы можете использовать

jekyll serve --host 0.0.0.0

. Это связывает ваше приложение с хостом & amp; следующее использование для подключения к нему с другого хоста

http://host's IP adress/4000 
7
ответ дан Sanyam Jain 18 August 2018 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: