![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Как на Delphi написать серверное CGI (или другое)приложение
по обработке запросов и ответов через Flash-евские XML.socet ? Как быть с портом >1024 ? Где это выставляется на сервере ? |
|
|||||
|
Регистрация: Jun 2001
Адрес: Saint-Petersburg
Сообщений: 116
|
Все достаточно просто:
Если на Delphi: создаешь приложение, которое слушает некий порт (номер выставляется произвольно, но желательно больше 1024). Номер порта выставляется в настройках компонента выполняющего соединение. Соответственно при создании XML сокета на Flash выставляешь этот же номер. К Delphi прилагается пример чата, где эта идея и реализована. Далее пишешь сам или ищешь в инете пример анализатора XML (в последней версии Delphi кажется уже есть компоненты для работы с XML). Если делать на другом языке, то примерно все тоже самое. Последний раз редактировалось Yuri S.; 30.10.2001 в 12:09. |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Спасибо конечно,
а на сервере(IIS к примеру) надо что-то выставлять ? |
|
|||||
|
Регистрация: Oct 2001
Адрес: Рязань
Сообщений: 29
|
Если ты конечно пишешь CGI приложение, то что-то там можешь и выставить. Твоя задача состоит в создании сервера прослушивающего определенный порт и отвечающего подключившемуся к этому самому порту (по определенному IP адресу) клиенту. Вот собственно и все. См. предыдущий вопрос...
__________________
Пейте пиво! |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Если я делаю CGI - так я должен каждый раз его вызывать(он же выбрасывает в стандартный поток(stdout) с принудительным номером порта типа http://тря-ля-ля.cgiprog:1025
Он же все время не будет сидеть и сканировать порт ? Или я чего-то не понимаю ? |
|
|||||
|
Регистрация: Jun 2001
Адрес: Saint-Petersburg
Сообщений: 116
|
Определись что ты хочешь сделать.
1. Если все что требуется - это принять XML из Flash, то необязательно использовать сокет. Сочиняешь серверный скрипт, который принимает данные, а во Flash'e используешь метод XML.send или XML.sendAndLoad. 2. Если делаешь что то для работы в реальном времени, то пишешь приложение принимающее и обрабатывающее соединения по определенному порту. Порт выставляется в самом приложении и не требует каких либо настроек на Web сервере. К CGI это уже имеет слабое отношение. Примеров на C и Java, по данной теме, в инете достаточно. |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Да в том то и дело, что Delphi скрипты не делает
,разве что Asp - но там я еще не копал. А Xml.sendandload - идет по 80 порту, или нет ? На стороне Flash-a формирую xml данные и отсылаю их.... Ну и как на сервере я весь этот сурогат буду ловить ? |
|
|||||
|
Регистрация: Oct 2001
Адрес: Рязань
Сообщений: 29
|
Кто тебе сказал, что Delphi не делает CGI скрипты. Делает, просто надо знать как
) Создаешь консольное приложение. Перед тем, как что либо будешь выводить, должны стоять следующие строки:writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; Вот пример отсылающий XML строку флэшу: program CgiDate; {$APPTYPE CONSOLE} uses SysUtils; begin writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; //Разумеется у тебя XML-строка своя writeln ('<LOGINREPLY STATUS="OK" />'); end. Если хочешь прочитать данные переданные тебе методом POST (а флэш имено так XML строку CGI приложению и передает, то тебе надо сделать приблизительно следующее: var DataStr: string; ContentLength: array [0..10] of Char; begin GetEnvironmentVariable ('CONTENT_LENGTH', ContentLength, sizeof (ContentLength)); SetLength (DataStr, StrToIntDef (ContentLength, 100)); readln (DataStr); //В DataStr переданная тебе строка . . . end. Так что вот так! Дерзай...
__________________
Пейте пиво! |
|
|||||
|
Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
|
Да - так все работает
А как бы это через WebModul -ь ловить. Там в обработчике webActions проверяешь/устанавливаешь respons/request -но это же всеравно идет через stdout и каждый раз вызывается мое консольное CGI !!! А как сделать, чтобы оно сидело и слушало - опа это мое, я его обрабатываю |
![]() |
Часовой пояс GMT +4, время: 00:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|