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

Вниз

TServerSocket в TService   Найти похожие ветки 

 
Newfrost   (2007-02-26 08:52) [0]

Добрый день, уважаемый ALL, возник такой вопрос: пишу сервис, который должен общаться с клиентскими машинами по сети, кидаю на "форму" сервиса компонент TServerSocket, и задаю обработчики. Порт открывает как положено, но ни одно из событий не срабатывает(( С какими параметрами нужно запустить полученный экзешник, чтобы он стартанул как сервис (чтобы можно было отлаживать)
(Delphi 2006, Win Vista), но те же проблемы возникали и на других виндах (тестировал на XP и 2003)

Всем заранее спасибо!!!


 
SergGG ©   (2007-02-26 10:54) [1]

ExeName /Install


 
Сергей М. ©   (2007-02-26 10:56) [2]


> С какими параметрами нужно запустить полученный экзешник,
>  чтобы он стартанул как сервис (чтобы можно было отлаживать)


Какое отношение это имеет к


> ни одно из событий не срабатывает


?

Ты уж сначала разберись досконально с регистрацией и спецификой работы сервисов как таковых и только потом  начинай "пичкать" свои сервисы конкретной функциональностью, в т.ч. TServerSocket


 
Newfrost   (2007-02-26 13:41) [3]

Я бы с радостью разобрался, но не могу найти... Дело обстоит так: сервис запускается (через services.msc), порт открывается, когда подключаюсь и отправляю какие-либо данные не происходит событие OnClientRead (( Почитал на разных форумах, ответов нигде нет( Был бы очень признателен, если бы мне открыли глаза на то, куда нужно смотреть...


 
Newfrost   (2007-02-26 13:52) [4]

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


 
Сергей М. ©   (2007-02-26 14:04) [5]


> сервис запускается (через services.msc)


Ну а что ж ты тогда спрашиваешь, как его "стартануть" ?
Вот прямо так и стартуй !
А по поводу отладки сервисов читай справку по теме "Debugging service applications".


> не происходит событие OnClientRead


В какой момент времени ты активируешь TServerSocket ?


 
Сергей М. ©   (2007-02-26 14:06) [6]


> Буду пытаться засунуть все это в отдельный поток и сделать
> сокет блокирующим


Не обязательно.
Можно оставить сервер в неблок.режиме и организовать в потоке сервиса цикл ожидания/выборки/диспетчеризации оконных сообщений.


 
Newfrost   (2007-02-26 15:43) [7]

Собственно вот код, его тут три строки, что в отдельном потоке, что в главном, никакой разницы, не обрабатываются сообщения...


procedure TService1.ServiceExecute(Sender: TService);
begin
ServerSocket1.Port := 9999;
ServerSocket1.Active := true;
while (not Terminated) do
ServiceThread.ProcessRequests(False);
end;


 
Сергей М. ©   (2007-02-26 16:16) [8]


> Newfrost   (26.02.07 15:43) [7]


Твой сервис взаимодействует с раб.столом ?


 
Newfrost   (2007-02-26 17:04) [9]

Нет, мне в принципе, все равно как он будет работать, главное, чтобы мог работать с сетью, мне нужно обрабатывать запросы клиентских компов... user-mode приложение не пойдет, т.к. пользователь может быть не залогинен, тогда некому будет обрабатывать :(


 
Newfrost   (2007-02-26 18:17) [10]

Уважаемые! Всем огромное спасибо, особенно Сергею М.! Взаимодействие с рабочим столом, как выяснилось, и было камнем преткновения! Исправил - и все работает как надо!!! Пошел читать мануалы дальше...



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
2-1191515645
Windows
2007-10-04 20:34
2007.10.28
Borland Delphi 6 + asm


2-1191321996
312kbps
2007-10-02 14:46
2007.10.28
Чтение текстового файла, занятого другим приложением !


2-1191926637
F@T@L_Err0r
2007-10-09 14:43
2007.10.28
Mutex


15-1190888082
Cyrax
2007-09-27 14:14
2007.10.28
Авторское право на схему города: пара тонких вопросов...


2-1191324437
Mariya
2007-10-02 15:27
2007.10.28
Создание кнопки программно