On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 3128
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.13 15:52. Заголовок: NETIO


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


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]


постоянный участник




Пост N: 2825
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.05.13 17:18. Заголовок: Dima пишет: Есть не..


Dima пишет:

 цитата:
Есть необходимость удаленно делать архивацию дабы сетку не грузить.


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3129
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.13 17:48. Заголовок: Andrey Не вариант. ..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 178
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 03.05.13 23:08. Заголовок: А через сокет это не..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3130
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.13 10:53. Заголовок: fil пишет: А через ..


fil пишет:

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


Знаешь как это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 179
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 04.05.13 21:18. Заголовок: На сервере сидит кл..



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

в FW есть sockclt.prg и sockserv.prg



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3132
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.05.13 22:42. Заголовок: fil понял бум смотр..


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2826
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.13 23:30. Заголовок: В xHarbour'e ест..


В xHarbour'e есть тоже самое..
udpclient.prg
udpserver.prg

rpcclient.prg
rpcclientst.prg
rpcserver.prg

server.prg


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3133
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.05.13 15:23. Заголовок: Вроде разобрался , н..


Вроде разобрался , но есть вопросец
Исходник запускаемого сервиса
 
#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


Запускаем Myserv i , все нормально
Затем Myserv s и получаю ошибку 1063
Если запустить руками из сервисов все работает и к нему можно подключаться
и делать архивацию , что и хотел.
Что это за ошибка 1063 и как ее обойти ?

PS
Смотрю в LetoDB функции по работе с сервисами из HBWIN не используются и написаны свои.
Интересно знать причину.
Паша отзовись !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2868
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.13 22:37. Заголовок: Поддержку службы в l..


Поддержку службы в 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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3134
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.05.13 22:47. Заголовок: Pasha пишет: Если н..


Pasha пишет:

 цитата:
Если не хочется запускать из менеджера служб, можно ее запускать командой net start


Дело не в том хочется или нет.
я так понял что запустить сервис из harbour не получится с помощью win_serviceStart , так ?

ЗЫ
С праздником Павел !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3137
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.05.13 17:39. Заголовок: Что то порча меня по..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3138
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.05.13 18:20. Заголовок: Вроде разобрался Бы..


Вроде разобрался

Было в тексте выше
 
hb_default( @cMode, "S" )

Запуск проги с параметром I и затем стартую руками из менеджера - все норм

Переделал на
 
hb_default( @cMode, "I" )


Запускаю прогу , вижу "Service has been successfully installed"
Лезу в менеджер служб и запускаю и висяк.



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 47
Зарегистрирован: 13.06.12
ссылка на сообщение  Отправлено: 14.06.13 08:20. Заголовок: Люди, подскажите, чт..


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3227
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.06.13 09:15. Заголовок: Панченко ..


Панченко
 
<nStrategy> is used to tune compression algorithm,
see HB_ZLIB_STRATEGY_*



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 48
Зарегистрирован: 13.06.12
ссылка на сообщение  Отправлено: 14.06.13 13:26. Заголовок: Dima Спасибо. Вопро..


Dima

Спасибо. Вопрос закрыт.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 132
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 08.11.13 15:44. Заголовок: NETIO Service


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


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3698
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.11.13 15:48. Заголовок: sashaBG пишет: Ну к..


sashaBG пишет:

 цитата:
Ну как ты успел запусть NETIO как Service ?


Конечно и давно работает успешно

Стартую вот таким батником
rpcserv i
net start ZIP_RPC

Uninstall в случае обновы
net stop ZIP_RPC
rpcserv u


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 133
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 08.11.13 16:32. Заголовок: А що случается если будет ошибка ?


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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3699
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.11.13 16:36. Заголовок: sashaBG пишет: или ..


sashaBG пишет:

 цитата:
или лучше позаботится чтоб не было ошибок во время выполнения


позаботится

У меня к примеру этот сервис ни разу еще не падал с марта месяца.
В принципе я не сильно и гружу его. Он занимается копированием и архивацией и другими мелочушками.
Все что мне от него нужно было я в нем прописал парой тройкой строчек

 
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



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 134
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 08.11.13 18:43. Заголовок: А я его нагружаю


А я NETIO нагружаю сильно

У меня технология такая :
Клиентский модуль через LetoDB заполняет первичные документы и выводит справки
а Серверная часть по заявке от Клиента запускает цикл обработки первичных документов .
Алгоритм обработки достаточно сложен , поетому я не стал пробовать как будет через Letoudf .

Сейчас у меня Серверная часть откомпилирована вмесе с библиотекoй MiniGUI и сдит в трее)
так как я въполняю некоторые задачи с етого модуля ( например создать новую базу новой фирмы, старт стоп сервера LetoDB , архивирование , возстановление архива и т.д.)

Хочу попробовать создать отедлны RPC модуль на чистом Харборе и запихать туда все ети процедуры обработки.
С цельию возможной компиляции в 64 бит и на других платформах ДЛЯ УСКОРЕНИЯ ОБРАБОТКИ

Естественно под Windows удобно будет запускать ето все как Service

A все служебные задачи вынести в клиент или в отельный административнй модуль ( связь через NETIO)




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5465
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.01.16 17:05. Заголовок: У кого то получилось..


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5244
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.12.16 00:15. Заголовок: Можно ли получить кл..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 26.04.24 21:11. Заголовок: Прошу подсказать, чт..


Прошу подсказать, что можно передать в 4-м параметре NET_RPC mt-серверу
кроме логических .t. и .f.

В HBNETIO Documentation от Przemyslaw Czerpak <druzus / at / priv.onet.pl>
дано такое определение

NETIO_MTSERVER( [<nPort>], [<cIfAddr>], [<cRootDir>],
[<lRPC> | <sFuncSym> | <hValue>],
[<cPasswd>], [<nCompressionLevel>], [<nStrategy>] )
-> <pListenSocket>

Пробовал <lRPC> - то есть .t. или .f. - полное разрешение или запрет RPC-функций выполняется без проблем.

А, что надо вставлять вместо <sFuncSym>, чтобы ограничить список этих функций не понял.

Пробовал просто название функции - не вызывается. Массив из названий тоже не вышло.

Что понимается под <hValue> nоже непонятно ?

Если можно - пример типа "делай как я"

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 33
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 27.04.24 00:33. Заголовок: Возможно, <sFun..


Возможно, <sFuncSym> это ссылка на функцию, напрмер: @str() или @abs()

а <hValue> - число указатель на нее.

Тогда вопрос в другом - как ее вызывать из клиента через NETIO_FUNCEXEC()
?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7943
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.04.24 18:50. Заголовок: subbota пишет: напр..


subbota пишет:

 цитата:
напрмер: @str() или @abs()


что бы вызывать ту или иную функцию в исходнике сервера нужно их указать
типа так
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
request hb_DirScan
и пересобрать его
в клиенте вызов типа netio_funcexec( "hb_fcopy".....и тд

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 34
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 27.04.24 21:39. Заголовок: Вопрос не в том, что..


Вопрос не в том, что некоторые функции не видны.
Их доступность действительно можно добавить через пересборку с request.

Если в 4-м параметре будет .t. - клиент плучает доступ ко всем ф-циям видимым серверу.
Есть множество ф-ций, видимых и без request. В том числе ф-ции основного модуля сервера.

А если в 4-м параметре будет .f. - клиенту запрещен доступ ко всем RPC функциям.

Но этот параметр. по-видимому, допускает задать фильтр, через который клиент получит
доступ только к определенным в нём ф-циям.

Аналогичный параметр имееет функция дополнительного фильтра
который можно наложить на сокет уже после запуска сервера.

NETIO_RPCFILTER( <pConnectionSocket>,
<sFuncSym> | <hValue> | NIL ) -> NIL

Что нужно записать при ее вызове вместо <sFuncSym> ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 35
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 29.04.24 02:17. Заголовок: Разобрался с параметром 4 для NETIO_MTSERVER( )


subbota пишет:

 цитата:
В HBNETIO Documentation от Przemyslaw Czerpak <druzus / at / priv.onet.pl>
дано такое определение

NETIO_MTSERVER( [<nPort>], [<cIfAddr>], [<cRootDir>],
[<lRPC> | <sFuncSym> | <hValue>],
[<cPasswd>], [<nCompressionLevel>], [<nStrategy>] )
-> <pListenSocket>

Пробовал <lRPC> - то есть .t. или .f. - полное разрешение или запрет RPC-функций выполняется без проблем.

А, что надо вставлять вместо <sFuncSym>, чтобы ограничить список этих функций не понял.


Немного разобрался. Поясняю как понял сам.

RPC - это функции/процедуры, которые может вызывать клиент для их исполнения на сервере.
Если в 4-м параметре будет .t. - для клиента будут доступны все функции, видимые серверу.
Если в 4-м параметре будет .f. - клиенту будет запрещен доступ ко всем RPC функциям.

Если в 4-м параметре будет указатель на некоторую функцию, видимую на сервере,
то, при вызове клиентом любой RPC-функции, вместо нее сервер всегда выполнит
функцию, указатель которой был передан в 4-м параметре NETIO_MTSERVER()
и при этом передаст ей:
- в первом параметре указатель на RPC функцию, которую хочет вызвать клиент
- в следующих параметрах - значения для параметров вызываемой RPC функции.

Как я сделал
Добавил в prg-шник в модуле сервера ( того где вызов NETIO_MTSERVER() ) свою функцию примерно так:

function my_Func_Eval_RPC( s_RPC_func, xPar1, xPar2 ... )
...
local cName_RPC_func := hb_ValToStr( s_RPC_func ) // Так получу <@имя_RPC_функции()>, запрашиваемой клиентом
...
В xPar1, xPar2, ... - будут параметры для запрошенной RPC-функции
Текстовые выражения для параметров можно найти так:
private cxPar1 := hb_ValToStr( xPar1 )
private cxPar2 := hb_ValToStr( xPar2 )
...
Проанализировав: cName_RPC_func, cxPar1 и cxPar2,
можно решить, что сделать с этим запросом и что вернуть клиенту.

Например, так можно вернуть то, что он просит:
return s_RPC_func:exec( xPar1, xPar2 )

Или передать этот запрос куда-то еще, например, внешнему обработчику
и вернуть ему то, что вернет этот обработчик.

Запись вызова mt-сервера в модуле сервера для моего примера станет какой-то такой

pListenSocket := NETIO_MTSERVER( [<nPort>], [<cIfAddr>], [<cRootDir>], @my_Func_Eval_RPC(), [<cPasswd>], [<nCompressionLevel>], [<nStrategy>] )

Если клиент просит сервера выполнить hb_fsize( "myfile.dbf" ),
то вызов RPC - функции у клиента может быть таким:
NETIO_FUNCEXEC( "hb_fsize", "myfile.dbf" )

Тут только нужно не забыть, что полный путь к файлу на стороне сервера будет
cRootDir + "myfile.dbf"

Остальное в Readme.txt к Netio от Przemyslaw Czerpak <druzus / at / priv.onet.pl>

Я это описание и пример батовских файлов для консольной компиляции нашел в
Harbour MiniGUI Extended Edition 22.12 (Release)
MiniGUI\SAMPLES\Advanced\NETIO_1\

А идеалогия взаимодействия клиента и сервера Netio лучше понимается через
MiniGUI\SAMPLES\Advanced\NETIO_3\
Там же батники для графической компиляции.

Спасибо Dima за уделенное внимание !

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 254
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет