![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Очень мало информации. А еще посмотрите, в статьях видел что-то о сервисах. Попробуйте запустить из-под отладчика.