Я только что установил cURL на свой жесткий диск, чтобы использовать его для тестирования на моем локальном хосте (в командной строке). Однако я не могу подключиться ни к одному порту. Вы можете увидеть каталог и мои комментарии ниже:
C: \ Users \ me \ curl \ src> curl -v https://localhost:9000
что дает мне:
- URL перестроен на: https://localhost:9000/
- тайм-аут при поиске имени не поддерживается
- Пробуем :: 1 …
- TCP_NODELAY установлен
- Пробуем 127.0.0.1 …
- TCP_NODELAY установлен
- подключиться к :: 1 порт 9000 не удалось: соединение отклонено
- подключиться к 127.0.0.1 порту 9000 не удалось: соединение отклонено
- Не удалось подключиться к порту localhost 9000: в соединении отказано
- Закрытие соединения 0 curl: (7) Не удалось подключиться к порту localhost 9000: в соединении отказано
Возможно, мне следовало добавить, что я использую IntelliJ и с тех пор включил cURL на жестком диске (что позволяет мне получить к нему доступ из любого каталога); предлагая мне попробовать следующее:
C: \ Users \ me \ scala \ play \ my-project> curl -v https://localhost:9000/
который возвращает:
- тайм-аут при поиске имени не поддерживается
- Пробуем :: 1 …
- TCP_NODELAY установлен
- подключиться к :: 1 порт 9000 не удалось: соединение отклонено
- Пробуем 127.0.0.1 …
- TCP_NODELAY установлен
- подключиться к 127.0.0.1 порту 9000 не удалось: соединение отклонено
- Не удалось подключиться к порту localhost 9000: в соединении отказано
- Закрытие соединения 0 curl: (7) Не удалось подключиться к порту localhost 9000: в соединении отказано
Так вроде порт 9000 не открыт. И теперь я думаю, что это нужно настроить в intelliJ — здесь, но похоже, что это поддерживается только в Ultimate Edition. Это может быть причиной возникшей у меня проблемы. Это может быть полезно для других, но было бы хорошо убедиться в этом, если у кого-то есть дополнительная информация.
Кто-нибудь слушает этот порт? — person jesus g_force Harris schedule 02.06.2017
Я занимаюсь программированием на Scala в IntelliJ, и я подумал, что это как слушать / подключаться к порту. Я что-то не так? — person jesus g_force Harris schedule 02.06.2017
Проблема в том, что никто не слушает порт 9000. Вам нужно открыть сокет из другой программы (вашего сервера) и начать прослушивание там. В противном случае ваша машина пытается подключиться к собственному 9000-му порту, однако, поскольку никто не говорит, что я слушаю, он сообщает, что соединение отклонено. — person jesus g_force Harris schedule 04.06.2017
@htkibar спасибо. Я не совсем уверен, где это делать (открыть сокет из другой программы (вашего сервера) и начать прослушивание там). Я думал, что создание виртуального сервера на маршрутизаторе, как описано здесь, позволит мне подключиться к порт, но, к сожалению, нет. — person jesus g_force Harris schedule 05.06.2017
Подумайте об этом так: вы открыли порт (дорога открыта), но за ним никого нет. Вам нужно, чтобы там работало приложение, которое могло бы вам ответить. — person jesus g_force Harris schedule 05.06.2017
@htkibar — хорошо — какое приложение вы бы посоветовали? Я думал, что это можно сделать в IntelliJ (IDE), но, как уже упоминалось, возможно, это можно сделать только в Ultimate Edition. — person jesus g_force Harris schedule 05.06.2017
Речь идет не об IDE как таковой. Ваш код должен открыть сокет и прослушать его. Я добавляю пример кода, проверьте его. — person jesus g_force Harris schedule 05.06.2017
Попробуйте использовать следующий код сервера при запуске
curl
:Спасибо. Не уверен, где вы предлагаете это поставить. Запустить в IntelliJ? — person jesus g_force Harris; 05.06.2017
Да, вы должны работать в Intellij — person jesus g_force Harris; 05.06.2017
Итак, я запустил это, и что-то изменилось, но при вводе
curl -n https://localhost:9000/
в командной строке я возвращаю GET / HTTP / 1.1, а не разметку страницы. Хотя кажется близким … — person jesus g_force Harris; 05.06.2017Это означает, что вы получаете что-то взамен. Теперь вам нужно записать в выходной поток все, что вы хотите передать. — person jesus g_force Harris; 05.06.2017
Он не переносит это на видео, о котором я упоминал. Я точно не знаю, как это сделать или что именно я здесь делаю. Не могли бы вы предложить какие-либо ссылки для этого? Благодарность — person jesus g_force Harris; 05.06.2017
Я не очень много использовал платформу Play, поэтому ничего не могу сказать. По сути, фреймворк должен абстрагироваться от этих задач за вас (писать в OutputStream под капотом). То, что я вам показал, просто доказывает, что проблема не в intellij или curl. — person jesus g_force Harris; 05.06.2017
Да — кажется странным, что что-то нужно настраивать вручную. Для большей ясности: если я запустил файл SBT в своем проекте, я смогу вывести свою работу в веб-браузер, но это не позволяет мне проводить быстрое тестирование с использованием cURL </ i> в командной строке, что необходимо для предотвращения буферизации, т.е. curl -n. Я вижу, что Play построен на основе Netty, но это все еще не дает мне окончательного ответа на этот вопрос. Кто-то другой, должно быть, уже испытывал это разочарование раньше. С благодарностью — person jesus g_force Harris; 05.06.2017
Это означает, что ваше приложение еще не запущено (поэтому на самом деле оно не прослушивает порт 9000).
Вы должны добавить конфигурацию запуска в IntelliJ (
Run
>Edit Configurations
>+
>Play 2 App
) и запустить ее перед вызовом curl.Другой способ запустить приложение — просто открыть терминал в папке проекта и запустить
sbt run
.Самые простые решения — самые лучшие. Я действительно думал, что IntelliJ будет прослушивать (предварительно назначенный) порт при запуске, но это не так. Для меня это было сделано из терминала IntelliJ, как вы упомянули. Спасибо за это :} — person jesus g_force Harris; 09.06.2017