LINUX.ORG.RU

Как обычно делается CGI на ANSI Си?

 , , ,


0

1

Допустим, мне нужен демон, висящий на порту и ждущий сообщений по сети, умеющий отправлять команды в ком порт. Железо не так интересно - там макс232 и атмега с прерываниями. Так вот, на перле ничего сложного нет, скрипт работает(правда через system(«отправляем hex в ком»)) Но вот с Си небольшая заморочка - хочется сделать правильно, а как - не знаю. По сути, интересен только принцип, код-то я напишу. Вот как бы вы обработали пару команд с удаленного устройства через сеть на Си?

★★★★★

Последнее исправление: minakov (всего исправлений: 1)

сетевая часть — классический сервер с bind, listen, select и accept

или по-проще: cgi + apache (например: livewatch.c — простенький интрерфейс к livewatch.de, in action)

com порт — тоже ничего сложного, вот ещё один маленький пример: tty.c — кусок моего программатора для atmega.

beastie ★★★★★
()
Ответ на: комментарий от thesis

Это просто второй бокал пятничного вина, не обращайте внимания. Просто принцип, по которому работает первый скрипт объясняется именно этим, а вот при написании сообщения все немножко слилось. Базовый вопрос все равно написал без ошибок, да и ответив на заголовок треда можно частично ответить и на главный вопрос жиз^W.

minakov ★★★★★
() автор топика
Ответ на: комментарий от beastie

Спасибо! Еще пару дней K&R и буду понимать что там написано

minakov ★★★★★
() автор топика

тебе нужен http? если нет, то можно взять inetd или xinetd, или daemontools - там просто все делается.

а, да, в тему про cgi на C призывается Eddy_Em - он такое делает.

hatefu1_dead
()
Ответ на: комментарий от hatefu1_dead

не знаю. Знал бы что мне нужно, не стал бы ЛОР провокационными вопросами забивать :3 Просто хочу узнать, как правильнее общаться с устройствами по сети. Хоть HTTP, хоть SSH, хоть что - но правильно

minakov ★★★★★
() автор топика
Ответ на: комментарий от hatefu1_dead

В профиле — ссылки на мои странички на гуглокоде и сосфорже. Там можно найти рабочие примеры + недописанную CGI-библиотеку (не закончил по «причинческим технинам», как понадобится в очередной раз, допишу).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от minakov

как правильнее общаться с устройствами по сети

Вариантов много. Все зависит от того, что должно делать устройство. Можно организовать как монопольный доступ, так и «многоклиентский». В первом случае достаточно запускать демон, работающий с устройством, при аутентификации пользователя на веб-морде. Во втором — демон лучше запускать сразу с включением устройства. Насчет общения процессов, думаю, тебе говорить ничего не нужно — Стивенса ты наверняка читал.

Eddy_Em ☆☆☆☆☆
()

Как обычно делается CGI на ANSI Си?

обычно

Обычно пишется интерпретатор перла :)

buddhist ★★★★★
()
Ответ на: комментарий от Eddy_Em

Не хотелось бы тебя огорчать, но и там и там ты не существуешь. Это какой код надо написать, чтобы гугол забанил? :3

minakov ★★★★★
() автор топика
Ответ на: комментарий от minakov

Тебя ЛОР забанил? Зайди ко мне в профиль! Сверху — раздел «контактная информация»:

Контактная информация
Mail: eddyem[at]yandex[dot]ru; edward.emelianoff[at]gmail[dot]com
Я на гуглокоде
Я в жж
Я на БХ (в readonly за правду-матку)
Я на sourceforge
Переходи по ссылке «я на гуглокоде» (но там надо быть залогиненным, чтобы на мою страничку попасть) или «я на сосфорже» (там логиниться не надо).

Вот, например, — недописанная (но уже рабочая) CGI-библиотека (запросы, куки, авторизация, аутентификация); а вот — проект на сях с вебмордой (и там их несколько).

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 1)
Ответ на: комментарий от minakov

Пожалуйста.

А логины везде разные по понятным причинам: где-то не разрешают длинный логин писать, где-то не разрешают любые символы, кроме букв, и т.д., и т.п. А потом получается, что если забудешь, под каким именем где-то регистрировался, то и не попадешь туда уже.

Eddy_Em ☆☆☆☆☆
()

Вот как бы вы обработали пару команд с удаленного устройства через сеть на Си?

Я бы взял libevent.

Reset ★★★★★
()

Кстати, если нужен реальный дуплекс, советую глянуть в сторону вебсокетов. Еще один их плюс в том, что ради одной-единственной веб-морды не придется поднимать апач или nginx

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от hatefu1_dead

можно взять inetd или xinetd

Согласен, это самый практичный способ.

Deleted
()
22 января 2013 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.