Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];

Вниз

Работа TServerSocket c cgi   Найти похожие ветки 

 
Интересующийся   (2006-02-07 05:06) [0]

Всем доброе время суток.

Может кто знает как научвить TServerSocket работать с cgi или с dll содержащими текстовые и графические ресурсы?

P.S.
Дело в том, что мне нужно создать сервер на основе TServerSocket.
Для дольнейшей работы с этим сервером мне предусмотреть возможность работы с внешними модулями (скрипты, cgi или макроязык), неохота постоянно вмешиваться в код сервера.


 
Digitman ©   (2006-02-07 08:26) [1]


> как научвить TServerSocket работать с cgi или с dll содержащими
> текстовые и графические ресурсы?


Никак.

У TServerSocket как у компонента транспортного уровня совершенно иные задачи - организация/контроль связи с клиентами и прием/передача данных (неважно каких).


> неохота постоянно вмешиваться в код сервера


И не нужно в него вмешиваться : код компонента вполне самодостаточен и с успехом выполняет возложенные на него (см. выше) функции.


> работать с cgi или с dll


А это уже совершенно иной, прикладной уровень !


 
Личность   (2006-02-07 08:48) [2]


> Digitman ©   (07.02.06 08:26) [1]
>
> > как научвить TServerSocket работать с cgi или с dll содержащими
>
> > текстовые и графические ресурсы?
>
>
> Никак.

Я не согласен, если конечно рассмастривать непосредственно cgi как консольное прилодение, то - ДА! но если допустим использовать ISAPI, то вполне можно создать "симбиоз" :) только это из серии мозгового гемороя...


 
Digitman ©   (2006-02-07 09:06) [3]


> Личность   (07.02.06 08:48) [2]


TServer/ClientSocket - компоненты транспортного уровня !
Никаких прикладных надстроек, позволяющих вести речь о каких-то там cgi ,  ISAPI и пр., эти компоненты не имеют. Им глубоко фиолетово, какого рода и содержимого информация передается с их помощью между партнерами по соединениям.


 
Личность   (2006-02-07 09:35) [4]

Ну, и где здесь ответ почему же нельзя его использовать? если им все равно, бери да используй...


 
Digitman ©   (2006-02-07 09:45) [5]


> и где здесь ответ почему же нельзя его использовать?


А где в вопросе автора фигурирует слово "использовать" ?
Он-то желает "научить" (т.е. изменить чужую готовую логику), а не "использовать".

"Научить" - никак, а вот "использовать" (т.е. "научить" свою прикладную логику использовать готовую чужую транспортную логику) - это пожалуйста.


 
Личность   (2006-02-07 09:48) [6]

Может он просто неправильно использовал термин? А если все же подразумевать "научить", то тут вы само сабой правы :)


 
Digitman ©   (2006-02-07 09:50) [7]


> Может он просто неправильно использовал термин?


Вряд ли.

Вот цитата:


> вмешиваться в код сервера


это и есть "научить".


 
Интересующийся   (2006-02-09 05:38) [8]

Приношу извинения за неточную формулировку вопроса.

Мне неважно как будет организовано взаимодействие с cgi и dll, лишь бы все это работало! :)

Digitman ©   (07.02.06 09:50) [7]

>Вряд ли.
>Вот цитата:

Имелся ввиду мой сервер, а некомпонент.

Хотя еесли есть возможность переписать (дописать) компонент так, чтобы он обрабатывал автаризацию, куки и работу с cgi я готов вмешаться в его исходный код!

P.S.
Опыт работы по созданию компонентов и их изменению есть, есть и иидеи, но хотелось бы сделать все правильно.


 
Интересующийся   (2006-02-09 05:55) [9]

Описываю задучу, верней задачи:

1. Сервер на основе этого компонента (основной компонент с которым я работаю в сети).

Сервер должен уметь:
а. Обрабатывать статические страницы (xtml и xtm)
б. Работать с динамическими страницвами, по возможности asp и php (возможно присутствие своего макроязыка)
в. работать с cgi и dll, имеет смысл разобрать все варианты (стандартная раюота с cgi, работа с dll имеющие ресурсы и др. варианты)
г. сервер должен иметь возможность вести станистику и создовать различные отчеты
д. Сервер должен уметь работать с куками и проводить авторизацию пользователя (с помощью TServerSocket или других компонентов, неважно)
е. Сервер должет быть многопоточен

2. Создать группу компонекнтов на снове (TServerSocket), или определить основные способы при которых сокет будет уметь работать по следующим протоколам HTTP, FTP, SMTP и возможно другими.

P.S.
Интересует вопрос:
При каких протоколах нужен блокированный сокет?


 
Digitman ©   (2006-02-09 08:16) [10]


> При каких протоколах нужен блокированный сокет?


Ни при каких.
Режим работы гнезда (блокирующий или неблокирующий) не имеет ни малейшего отношения к прикладным протоколам (HTTP, FTP, SMTP).


 
Digitman ©   (2006-02-09 09:38) [11]


> HTTP, FTP, SMTP


Используй соответственно TIdHTTPServer, TIdFTPServer, TIdSMTPServer из состава Indy.

Эти компоненты совмещают с себе транспортный и прикладной уровни.


 
Интересующийся   (2006-02-09 10:58) [12]

> Используй соответственно TIdHTTPServer, TIdFTPServer, TIdSMTPServer из состава Indy.

Нет нималейшего сомнения в том, что с помощью этих компонентов можно легко и просто (по сравнению с другими) создать нужный сервер.

Да и примеров подобной работы в нете и литературе придостаточно.

Но мне надо научить свой сервер (основанный на TServerSocket) научить работать с CGI И DLL.

P.S.
Потдробней в Интересующийся   (09.02.06 05:55) [9]

Я вижу два пути:
1. Добавлять нужные мне вещи в потомок TThread (который вызывается для обработки)
2. Изменить логику самого TServerSocket и всех сопутствующих ему компонентов (Что впринципе считаю возможно, но приведет к большому гемору мозга).


 
Digitman ©   (2006-02-09 11:19) [13]


> Нет нималейшего сомнения в том, что с помощью этих компонентов
> можно легко и просто (по сравнению с другими) создать нужный
> сервер



> мне надо научить свой сервер (основанный на TServerSocket)
> научить работать с CGI И DLL


Опять ты никак не поймешь, что TServerSocket - это только транспорт ! Его задача - гонять туда-сюда данные произвольного типа и назначения. В том числе и произвольные данные строкового типа. На которых, к примеру, базируется тот же HTTP.

Что тебе мешает с пом. компонента TServerSocket принимать строки и интерпретировать их содержимое в соответствии с HTTP ?


 
Интересующийся   (2006-02-09 11:43) [14]

> Что тебе мешает с пом. компонента TServerSocket принимать строки и интерпретировать их содержимое в соответствии с HTTP?

Я и делаю это в отдельном потоке организованного при помощи TThread, но это уже становиться довольно праблемотично, да и возможно нестои решать задачу подобным образом.

Кроме того я неутверждаю что вся работа должна производиться в самом компоненте.

Варианты таковы:
1. Реализовать все обработку (неважно с чем CDI, DLL, FTP, SMTP) в или нескольких потоках (потомках TThread)
2. Дописать в TServerWinSocket нужные мне свойства (возможно и другие компоненты работающие с TServerSocket).
3. Создать свой компонент (с нуля) являющийся родительским для компонентов требуемых мне.


 
Digitman ©   (2006-02-09 12:03) [15]


> Я и делаю это в отдельном потоке организованного при помощи
> TThread


Ну вот и делай !
Я не вижу в этом никаких проблем.

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


 
Интересующийся   (2006-02-09 12:08) [16]

Если в сасом TServerSocket или в его потомках нельзя организовать работу с cgi, то какие данные нужно из него взять и в каком виде передать cgi-приложению?

P.S.
Допустим я добавляю в TServerWinSocket и TServerSocket (в своем варианте)  процедуру

OnCgi(Sender: TObject; Socket: TCustomWinSocket; Cgi : String; Info: String)

Где Cgi - Cgi-приложение, a Info - параметры которы передаем cgi


 
Интересующийся   (2006-02-09 12:13) [17]

Хотя подобную процедуру можно добавить в мой потомок TThread.

А вот что в ней делвть дальше?


 
Digitman ©   (2006-02-09 12:21) [18]


> Интересующийся   (09.02.06 12:08) [16]


Ей-богу - ты или нерусский или одно из двух)

Тебе русским языком сказано - не трогай исходники TServerSocket ! Это генофонд !
Это исходники компонента транспортного (!!!!) уровня !
Нечего на транспортном уровне делать логике прикладного уровня !

TIdHTTPServer реализует и транспорт и прикладную надстройку над ним !
Не перемешивая, а объединяя в конечную логику !
Это то что тебе надо, если ты разницы между уровнями не ощущаешь !
И это не "сокет", понимаешь ? Это - компонент, реализующий прикладную логику HTTP-сервера, и использующий на транспортном уровне гнезда и TCP-протокол !

http://www.citforum.ru/nets/switche/osi.shtml


 
Интересующийся   (2006-02-09 17:00) [19]

Все с  TServerSocket понятно.

> Digitman ©   (09.02.06 12:21) [18]
> http://www.citforum.ru/nets/switche/osi.shtml

За url спасибо.


 
Интересующийся   (2006-02-10 09:50) [20]

Симбиоз CGI и TServerSocket при помощи ISAPI, как?


 
Digitman ©   (2006-02-10 11:42) [21]


> TServerSocket


Я устал ...

TServerSocket - транспорт !!!!!

Ему, этому "транспорту" по-барабану что передавать/принимать - то ли CGI-данные, то ли ISAPI-данные !!!!!!!!!!!!!!!!!!!!


 
Интересующийся   (2006-02-11 08:03) [22]

Возможно, я неправильно задал вопрос :((

Тогда задам его подругому
http://delphimaster.net/view/6-1139633936/



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.044 c
15-1139058841
VseHotjatIJaHo4u
2006-02-04 16:14
2006.02.26
Таймер, Т_Т


6-1132092302
Volf_555
2005-11-16 01:05
2006.02.26
Как по сети копировать папки с файлами?


15-1138667087
Petr V. Abramov
2006-01-31 03:24
2006.02.26
Россияне не должны стать ИТ-батраками


2-1139127390
Silica
2006-02-05 11:16
2006.02.26
Ячейки


2-1139657000
mctarik
2006-02-11 14:23
2006.02.26
Как определить размер файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский