Главная страница
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.015 c
6-1172742675
Ryden
2007-03-01 12:51
2007.10.28
Работа с файлом на другом компьютере


15-1191392863
andreoman
2007-10-03 10:27
2007.10.28
как копировать временный файл из Opera


15-1190299649
Nikfel
2007-09-20 18:47
2007.10.28
Драйвер сотового MOTOROLA.


1-1187084696
kudatsky
2007-08-14 13:44
2007.10.28
Запуск Winrar с командной строкой


2-1191689278
Nikfel
2007-10-06 20:47
2007.10.28
Над каким элементом в списке курсор.