Не удается подключиться к localhost с помощью cURL в командной строке

Я только что установил 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

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. jesus g_force Harris

    Попробуйте использовать следующий код сервера при запуске curl:

    import java.net._
    import java.io._
    import scala.io._
    
    val server = new ServerSocket(9000)
    while (true) {
        val serv = server.accept()
    
        val in = new BufferedSource(serv.getInputStream()).getLines()
        val out = new PrintStream(serv.getOutputStream())
    
        out.println(in.next())
        out.flush()
        serv.close()
    }
    

    Спасибо. Не уверен, где вы предлагаете это поставить. Запустить в 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

  2. jesus g_force Harris

    Это означает, что ваше приложение еще не запущено (поэтому на самом деле оно не прослушивает порт 9000).

    Вы должны добавить конфигурацию запуска в IntelliJ (Run> Edit Configurations> +> Play 2 App) и запустить ее перед вызовом curl.

    Другой способ запустить приложение — просто открыть терминал в папке проекта и запустить sbt run.

    Самые простые решения — самые лучшие. Я действительно думал, что IntelliJ будет прослушивать (предварительно назначенный) порт при запуске, но это не так. Для меня это было сделано из терминала IntelliJ, как вы упомянули. Спасибо за это :} person jesus g_force Harris; 09.06.2017

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: