Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Не в тему, но все же вопросы к профессионалам Perl   Найти похожие ветки 

 
guard_gg ©   (2006-09-30 10:02) [0]

Доброго времени суток.
Я не так давно работаю с Perl, (всего 2 недели бессонных дней и ночей изучения, естественно не одного написанного для каких-либо целей скрипта, просто знания синтаксиса языка и небольшой опыт работы с процедурами и функциями).

Мне необходимо написать скрипт сервера, к которому подключалось бы несколько клиентов и этот сервер используя комманды клиентов, обрабатывал данные каким либо образом, или/и передавал их определенному другому клиенту. По сути дела это должен быть скрипт чата, только более функциональный.

После долгих изучений интернет-документаций (ЛИЧНОЕ МНЕНИЕ: Либо полный бред, либо 5% переведенной документации разработчиков), а также документации разработчиков, и просмотр скриптов чата я пришел в тупик.

КАК БОРОТЬСЯ С ЭТИМИ ПРОБЛЕМАМИ?

1) Функция "accept" приостанавливает  работу скрипта пока не будет подключен новый клиент и в это время невозможно выполнять комманды отосланные на сервер подключенными клиетами.

2) Насколько я понимаю используя TCP протокол мы можем пользоваться сообщениями CallBack, к примеру On_ClientRead On_ClientWrite On_Connected (вообщето это для Delphi and C, но Perl тоже имеет CallBack, видел гдето в документации), что вполне бы решало мою проблему, но про CallBack в сокетах я ничего не нашел, в скриптах чата видел как человек получает данные TCP протокола от клиента как будто этол UDP протокол, может ошибаюсь по неопытности но вроде так.

3) В документации разработчика про multiconnected socket говорилось об использовании функции fork, но тогда у меня возникает 2 вопроса:
 - Не слишком ли это жирно когда к серверу подключены к примеру 100 человек и на сервере загружен 101 скрипт, 100  +  1 ждет нового клиента?
 - Как между этим неограниченным количеством запущенных скриптов передавать данные от одного клиента к другому (т е от одного скрипта другому), верю что возможно но может оказаться черезчур сложным или медленным.

4) А можно ли написать программу на Delphi или C и запустить на Windows сервере, насколько я понимаю там скрипты с раширением asp, и наверное exe-шку никто тебе не разрешит запустить.., эх.... я запутался.... подскажите кто-нибудь please.


 
ZMRaven ©   (2006-09-30 13:15) [1]

а теперь выпей чего-нибудь и сходи к друзьям отдохни..пусть знания улёгяться в голове на недельку :-)...
а через недельку подумай снова.


 
X9 ©   (2006-09-30 15:07) [2]

Не понимаю, зачем так всё усложнять.
Скрипты на Perl в Интернете работают по протоколу (если так можно выразиться) CGI: в крипт передаются параметры и выходят обработанные данные.
Я ещё не встречал постоянно работающий скрипт (просто не искал), так как это слишком рискованно, ибо зависание оного будет очень неприятным делом.
К тому же, многие хостеры не любят скрипты, которые постоянно грузят процессор и кушают память.

Данные от одного клиента можно держать в каком-либо файле (или БД), и запрашивать их уже при поключении другого клиента, который выполнит скрипт с определёнными параметрами.

Например, заходя на этот форум Вы невно запускаете скрпт http://delphimaster.ru/cgi-bin/forum.pl, который


 
X9 ©   (2006-09-30 15:16) [3]

< извинияюсь, невовремя нажал "Отправить">

... который путём выполенения определённых действий генерирует страничку, которая и отображается в браузере. Например, чтобы попасть в конференцию "Прочее" и посмотреть мои вопросы, скрипту передаются следующие параметры: http://delphimaster.ru/cgi-bin/forum.pl?n=3&user=X9 ,
где параметрами являются "n" (значение в скрипте = 3) и "user" (значение = X9).
С помощью процедуры print (или других процедур вывода) клиенту передаются данные, например:

print("<!DOCTYPE HTML public "-//W3C//DTD HTML 4.0 Transitional//EN"//">

В браузер будет передан этот код, затем он сможет отобразить страницу.


 
palva ©   (2006-09-30 17:08) [4]

> Не понимаю, зачем так всё усложнять.
Автор не хочет писать обычный CGI. Он хочет писать сервер.
Зачем? По-видимому, начальство поручило. А тут уж обсуждать нечего. Пиши и получай за это деньги либо не пиши, тогда увольняйся.


 
guard_gg ©   (2006-10-05 02:03) [5]

izvinite chto na latinice.

Spasib za infu po CGI no k sozhalenyu ya ee znau dostatochno horosho.

Menia interesuet imenno sozdanie servera, i ya dazhe ne znau pod chem ego napisat". Pozhaluista, posovetuite! Poka ia tak i ne yshlishal otveti na svoi voprosi.

izvin chto nasilutu delphi master, no ia sam programmist delphi, i ne pervii den" zdes" bivau.


 
McSimm ©   (2006-10-05 10:57) [6]

Если вы пишите web приложение, т.е. между вами и клиентом находится web-server и браузер, придется следовать спецификации CGI.
На чем написано CGI-приложение - неважно, это в равной степени может быть и exe для Windows сервера.
Но держать постоянное соединение и пользоваться всеми его прелестями не получится, т.к. соединение держит web-server с браузером.

Хотя, в браузер можно внедрить активный элемент, например Flash или ActiveX или вообще отказаться от браузера, но на стороне сервера нужен свой агент (или демон), который будет жить независимо от web-сервера, слушать порты и держать соединения. И в этом случае уж совсем не важно на чем написан сервер. Можно и на Perl и на PHP (работа с сокетами в них есть), но наверное проще все же на C (или Делфи, если Windows)



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

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1158764711
Alvin
2006-09-20 19:05
2006.10.29
Бесплатный Хостинг с поддержкой CGI на Delphi


2-1160760529
anton773
2006-10-13 21:28
2006.10.29
фокус ввода


2-1160752903
Merry
2006-10-13 19:21
2006.10.29
TIBTable и TDataSource


3-1157479783
DBE
2006-09-05 22:09
2006.10.29
paradox на другом компе


15-1159937308
vidiv
2006-10-04 08:48
2006.10.29
Непрерывное профессиональное обучение.