Форум » [x]Harbour » NETIO » Ответить

NETIO

Dima: А не подскажет кто ,как повесить netio_mtserver в виде сервиса и как правильно собрать задачу. Есть необходимость удаленно делать архивацию дабы сетку не грузить. Спасибо.

Ответов - 22, стр: 1 2 All

Andrey: Dima пишет: Есть необходимость удаленно делать архивацию дабы сетку не грузить. Да сделай архивацию по расписанию на той машине, где все базы расположены. Проще выйдет...

Dima: Andrey Не вариант. Я должен управлять самим процессом. В начале копирую базу средствами ADS на сервере а затем нужно удаленно по RPC запустить архивацию.

fil: А через сокет это незя сделать ?


Dima: fil пишет: А через сокет это незя сделать ? Знаешь как это сделать ?

fil: На сервере сидит клиент который делает сокет (напр. по 2000 порту) моя прога коннектится с ним по IP и дает указание на архивацию в FW есть sockclt.prg и sockserv.prg

Dima: fil понял бум смотреть сырцы FW. Спасибо. Но думаю вопросов будет еще целый воз

Andrey: В xHarbour'e есть тоже самое.. udpclient.prg udpserver.prg rpcclient.prg rpcclientst.prg rpcserver.prg server.prg

Dima: Вроде разобрался , но есть вопросец Исходник запускаемого сервиса [pre2] #define _SERVICE_NAME "Harbour_Service" #define DBPORT 2941 #define DBPASSWD "topsecret" request hb_curdrive request curdir request hb_zipfile PROCEDURE Main( cMode ) LOCAL nError LOCAL cMsg hb_default( @cMode, "S" ) /* NOTE: Must be the default action */ SWITCH Upper( cMode ) CASE "I" CASE "INSTALL" IF win_serviceInstall( _SERVICE_NAME, "ZIP_RPC",, WIN_SERVICE_AUTO_START ) ? "Service has been successfully installed" ELSE nError := wapi_GetLastError() cMsg := Space( 128 ) wapi_FormatMessage( ,,,, @cMsg ) ? "Error installing service: " + hb_ntos( nError ) + " " + cMsg ENDIF EXIT CASE "U" CASE "UNINSTALL" IF win_serviceDelete( _SERVICE_NAME ) ? "Service has been deleted" ELSE nError := wapi_GetLastError() cMsg := Space( 128 ) wapi_FormatMessage( ,,,, @cMsg ) ? "Error deleting service: " + hb_ntos( nError ) + " " + cMsg ENDIF EXIT CASE "S" CASE "SERVICE" /* NOTE: Used when starting up as service. Do not invoke the executable manually with this option */ IF win_serviceStart( _SERVICE_NAME, @SrvMain() ) ? "Service has started OK" ELSE nError := wapi_GetLastError() cMsg := Space( 128 ) wapi_FormatMessage( ,,,, @cMsg ) ? "Service has had some problems: " + hb_ntos( nError ) + " " + cMsg ENDIF EXIT ENDSWITCH RETURN PROCEDURE SrvMain() local pSockSrv:= netio_mtserver( DBPORT,,, /* RPC */ .T., DBPASSWD ) if empty( pSockSrv ) win_serviceSetExitCode( 0 ) win_serviceStop() return endif DO WHILE win_serviceGetStatus() == WIN_SERVICE_RUNNING hb_idleSleep( 0.5 ) ENDDO netio_serverstop( pSockSrv, .t. ) win_serviceSetExitCode( 0 ) win_serviceStop() RETURN [/pre2] Запускаем Myserv i , все нормально Затем Myserv s и получаю ошибку 1063 Если запустить руками из сервисов все работает и к нему можно подключаться и делать архивацию , что и хотел. Что это за ошибка 1063 и как ее обойти ? PS Смотрю в LetoDB функции по работе с сервисами из HBWIN не используются и написаны свои. Интересно знать причину. Паша отзовись !

Pasha: Поддержку службы в letodb сделал Александр Охотников, и это было до того, как этот механизм появился в Харборе. Поэтому он и не используется. Ошибка 1063 - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT или The service process could not connect to the service controller. В примере не рекомендуется так запускать службу: /* NOTE: Used when starting up as service. Do not invoke the executable manually with this option */ Если не хочется запускать из менеджера служб, можно ее запускать командой net start

Dima: Pasha пишет: Если не хочется запускать из менеджера служб, можно ее запускать командой net start Дело не в том хочется или нет. я так понял что запустить сервис из harbour не получится с помощью win_serviceStart , так ? ЗЫ С праздником Павел !

Dima: Что то порча меня посетила. Не хочет стартовать сервис (ошибка 1053). Если его удалять , прога сообщает что он удален , но реально в менеджере служб живет и удалить его от туда не получается. B реестре соответствующую ветку удалить так же не получается. Жесть.

Dima: Вроде разобрался Было в тексте выше [pre2] hb_default( @cMode, "S" ) [/pre2] Запуск проги с параметром I и затем стартую руками из менеджера - все норм Переделал на [pre2] hb_default( @cMode, "I" ) [/pre2] Запускаю прогу , вижу "Service has been successfully installed" Лезу в менеджер служб и запускаю и висяк.

Панченко: Люди, подскажите, что означает и какие значения может принимать параметр nStrategy в NETIO_CONNECT() и др.

Dima: Панченко [pre2] <nStrategy> is used to tune compression algorithm, see HB_ZLIB_STRATEGY_* [/pre2]

Панченко: Dima Спасибо. Вопрос закрыт.

sashaBG: Dima Привет ! Ну как ты успел запусть NETIO как Service ?

Dima: sashaBG пишет: Ну как ты успел запусть NETIO как Service ? Конечно и давно работает успешно Стартую вот таким батником rpcserv i net start ZIP_RPC Uninstall в случае обновы net stop ZIP_RPC rpcserv u

sashaBG: А що случается если будет ошибка в программе ? Надо снова все запускать да или лучше позаботится чтоб не было ошибок во время выполнения

Dima: sashaBG пишет: или лучше позаботится чтоб не было ошибок во время выполнения позаботится У меня к примеру этот сервис ни разу еще не падал с марта месяца. В принципе я не сильно и гружу его. Он занимается копированием и архивацией и другими мелочушками. Все что мне от него нужно было я в нем прописал парой тройкой строчек [pre2] request hb_curdrive request curdir request hb_zipfile request ferase request directory request __copyfile request hb_fcopy request os request hb_fileexists request hb_DynCall [/pre2]

sashaBG: А я NETIO нагружаю сильно У меня технология такая : Клиентский модуль через LetoDB заполняет первичные документы и выводит справки а Серверная часть по заявке от Клиента запускает цикл обработки первичных документов . Алгоритм обработки достаточно сложен , поетому я не стал пробовать как будет через Letoudf . Сейчас у меня Серверная часть откомпилирована вмесе с библиотекoй MiniGUI и сдит в трее) так как я въполняю некоторые задачи с етого модуля ( например создать новую базу новой фирмы, старт стоп сервера LetoDB , архивирование , возстановление архива и т.д.) Хочу попробовать создать отедлны RPC модуль на чистом Харборе и запихать туда все ети процедуры обработки. С цельию возможной компиляции в 64 бит и на других платформах ДЛЯ УСКОРЕНИЯ ОБРАБОТКИ Естественно под Windows удобно будет запускать ето все как Service A все служебные задачи вынести в клиент или в отельный административнй модуль ( связь через NETIO)

Dima: У кого то получилось запустить NETIO (сервер) по порту отличному от 2941 ?

Andrey: Можно ли получить клиентские станции (client) которые работают с сервером NETIO ? Интересует имя машины и IP адрес. Можно конечно сделать через журнал-базу, но вдруг клиент отвалился по ошибке и запись за собой не подтер.



полная версия страницы