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

Вниз

Не в тему, но все же вопросы к профессионалам 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
4-1150378776
inri13666
2006-06-15 17:39
2006.10.29
Как управлять сервисом в Win XP?


2-1160563397
Alex_C
2006-10-11 14:43
2006.10.29
Как сохранить выделение в Memo?


5-1141656562
Belorus
2006-03-06 17:49
2006.10.29
Raize Components v4


6-1149006478
Tananda
2006-05-30 20:27
2006.10.29
TNMUDP


2-1160736800
tyo
2006-10-13 14:53
2006.10.29
размер шрифта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский