Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Service [D6, Win2k]


Yogi ©   (2002-11-29 22:09:00) 

Приветствую! Очень просил бы вам проконсульировать меня по поводу приложений-сервисов.
В первый раз сталкиваюсь с программированием сервисов. Данный сервис выполняет роль клиента в системе клиент-сервер.
Действовал я так: Создать>Приложение сервис. Далее добавил туда CientSocket и обрабатывал событие OnRead для него. Все работает нормально, клиент получает команды сервера, адекватно :) на нах реагироет. Но так продолжается секунд 10, после чего сервис "вылетает", т.е. закрывается без каких-любо сообщений об ошибке.
Пробовал запускать сервис с параметром /install, но в этом случае происходят еще более странные вещи: клиент конектится с сервером (те событие OnConnect наступает), но при попытке послать сообщение, сервер кричит, что ни одного клиента нет...
Помогите разобраться что к чему, пожалуйста!


Александр Спелицин   (2002-12-03 10:40:00) [1]

> А объяснение тому, что сервис вылетает из-под дебагера я все-таки нашел в справке...
Ну вот видите, и справку бывает полезно почитать :o)))!
А что касается написания сервисов, то настоятельно рекомендую Вам всю поднаготную их написания. Конечно, об этом прекрасно расписано в MSDN, но я советую Вам прочитать "Программирование серверных приложений для Microsoft Windows 2000" Рихтера.
Ну а если приведенный там пример для Вас окажется слишком трудным, то найдите в примерах к MSDN есть простенький пример написания сервиса. Ищите файлы service.h, service.c, simple.c.
В коментариях этих файлов содержится почти вся необходимая Вам информация.


Yogi   (2002-12-02 23:22:00) [2]

Всем спасибо! Флажок "Разрешить взаимодействие с рабочим столом" реально помог! А объяснение тому, что сервис вылетает из-под дебагера я все-таки нашел в справке: You must launch the service quickly (within 15-30 seconds of application startup) because the application will terminate if no service is launched


asmith   (2002-12-02 13:01:00) [3]

Если из сервера вызывается messagebox, для него обязательно нужно установить флажок "Allow service to interact with desktop"


Dmitry Rogov   (2002-12-02 12:02:00) [4]

На Service.Execute должно быть что-то типа:

while not Terminated do YourThread.ProcessRequests(true);

Не получится, пиши, попробую объяснить подробнее.


Dmitry Rogov   (2002-12-02 12:00:00) [5]

На service.execute должно быть что-то типа:

while not Terminated do Service.ProcessRequests(true);

Если не получится пиши, объясню подробнее.


Yogi   (2002-12-02 02:35:00) [6]

Тема такая. Описанная выше ситуация складывается какой бы сервис я не создал. Самый простейший пример - создаю сервис, в него добавляю таймер, который каждые 10 сек. выдает messagebox. Заускаю. Через ~12 сек. сервис вылетает. Если при помощи ключа /install я устанавливаю его и потом запускаю через "Управление компьютером" вкладка "Службы", то никаких сообщений не появляется вовсе, т.е. он не работает. И так с любым написанным мною сервисом...


Cobalt   (2002-11-30 00:44:00) [7]

Очень мало информации. А еще посмотрите, в статьях видел что-то о сервисах. Попробуйте запустить из-под отладчика.


Наверх

Титульная страница Поиск, карта сайта Написать письмо