Как отправить запрос GET / POST с помощью Forth

Я хочу написать программу Forth для своего Raspberry Pi. Эта программа должна считывать некоторые данные датчиков из существующего файла и отправлять их на веб-сайт, где эти данные хранятся.

Поискав в Интернете, можно было найти множество документации о том, насколько легко и быстро Форт и как вычислять числа Фибоначчи. Но как я могу запросить URL-адрес? Как я могу отправить данные на сайт и обработать результат?

Если нет поддержки сокетов: можно ли запустить внешнюю программу, такую ​​как curl / wget, для выполнения запроса?


person t3o    schedule 02.05.2018    source источник
comment
Хороший вопрос (на который я не знаю ответа). Для Gforth (который я фактически установил на Raspberry Pi) на их странице в библиотеки в нем перечислены httpd.fs, веб-сервер (недокументированный) - поэтому я предполагаю, что есть доступ к сокетам.   -  person Peter Mortensen    schedule 02.05.2018
comment
Мои инструкции по установке Gforth ( в конце ответа).   -  person Peter Mortensen    schedule 02.05.2018
comment
Я только что нашел пример на rosettacode. И еще один вопрос по этой проблеме: stackoverflow.com/questions/49602466/forth-networking- библиотека   -  person t3o    schedule 02.05.2018
comment
Предоставляет ли Raspberry Pi какую-либо документацию относительно их реализации Forth? Все дело в том, какие слова Forth они могут предоставить в библиотеке для своего Forth. Доступные библиотеки GForth, вероятно, не помогут вам, если вы не захотите самостоятельно портировать реализацию из этого домена.   -  person lurker    schedule 02.05.2018
comment
Важно упомянуть, какую реализацию Forth вы используете на Raspberry Pi? Поскольку сокеты не являются частью стандарта, сетевые библиотеки и API зависят от реализации.   -  person ruvim    schedule 03.05.2018
comment
Вот пример из Rosettacode: rosettacode.org/wiki/HTTP#Forth Он работает с include unix / socket.fs   -  person Manuel Rodriguez    schedule 07.06.2018


Ответы (1)


Из вопроса не очевидно, какая реализация Forth используется.

Например, Gforth (который доступен на Raspberry Pi) имеет некоторую поддержку сокетов, а также позволяет запускать внешнюю программу, используя слово system. См. Мой ответ на аналогичный вопрос: Как сделать Я читал необработанный код с веб-сайта в Gforth?

Пример создания дочернего процесса curl в Gforth:

S" curl https://example.com/" system

В любом случае кажется, что наиболее перспективным подходом к данной проблеме является разработка привязки к libcurl (если он еще не существует для используемой реализации Forth).

person ruvim    schedule 03.05.2018
comment
OP работает Forth на Raspberry Pi. Доступна ли ему та же библиотека сокетов, что и Gforth? - person lurker; 03.05.2018
comment
@lurker, спасибо - мне очень не хватало того, что в вопросе не упоминается реализация Forth. Теперь я соответствующим образом обновил ответ. В случае использования libcurl нет необходимости в библиотеке сокетов. - person ruvim; 03.05.2018