Clipper On Line • Ver Tópico - Atualização da HbNetio
Página 1 de 1

Atualização da HbNetio

MensagemEnviado: 27 Jun 2016 21:10
por asimoes
Atualização de hoje da hbnetio

A parte interessante:
USE net:example.org:2942:path/to/file
netio_ProcExec( "example.org:2942:procname" )
or using UNC paths:
USE net://example.org:2942/path/to/file
netio_ProcExec( "//example.org:2942/procname" )
It's also possible to specify the password. The connection string
is in format:
<server>[:<port>[:<passwd>]]:<filepath|funcname>
or:
//<server>:<port>:<passwd>:<filepath|funcname>
or:
//<server>[:<port>]/<filepath|funcname>
Backslashes '\' are also supported and can be used instead of '/'.
Password is always terminated by ":" and whole connection string
is terminated by Chr(0) so it's not possible to use these two
characters as part of password. Anyhow when passwords are required
then it's recommended to open the connection by netio_Connect()
and then specify only server and port if server is not unique
enough to chose from existing connections. If server is not
given then default connection is chosen.

Atualização da HbNetio

MensagemEnviado: 30 Out 2018 16:43
por rubens
O Post é antigo, mas...

ASimoes, ainda está usando Netio?
Vi um exemplo na HMGs e parece bem simples...

Rubens

Atualização da HbNetio

MensagemEnviado: 30 Out 2018 17:56
por asimoes
rubens escreveu:O Post é antigo, mas...

ASimoes, ainda está usando Netio?
Vi um exemplo na HMGs e parece bem simples...

Rubens


Somente é um sistema, no momento estou usando a Leto_Dbf (fork)

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 06:57
por asimoes
Hbnetio faz parte da contribuição
Ltodbf projeto independente

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 07:47
por Itamar M. Lins Jr.
Ola!
Tem muita diferença.
Já postei aqui duas vezes o próprio criador do NetIO explicando as diferenças.
NetIO foi criado para suprir/resolver o problema do SMB do windows, pois usando TCP cliente servidor quem usa NetIO não precisa mais mapear a pasta. Mas ele só faz isso.
O LetoDb[f] além disso que tem no NetIO, tem muito mais coisas é muito mais complexo. Roda em redes ADSL por exemplo. Tem até TRANSACTION.
      LETO_BEGINTRANSACTION( [ [ lUnlockAll ] )   
      LETO_ROLLBACK( [ lUnlockAll ] )                          ==> nil
      LETO_COMMITTRANSACTION( [ lUnlockAll ] )                 ==> lSuccess
      LETO_INTRANSACTION()                                     ==> lTransactionActive

Configuração especial para SAMBA.
      4.4 Samba file service

If files served by a Samba server to its clients need to be shared with a LetoDBf server,
LetoDBf must be special configured.

E outras tantas funções importantes prontas.
No NetIO podemos ter funções(criar elas também) do lado do servidor, mas precisamos aprender como fazer via RPC.
o LetoDB[f] roda DOIS processos simultaneamente fica super rápido. Um na porta 2812 e outro na 2813

Saudações,
Itamar M. Lins Jr.

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 08:53
por rubens
Bom dia
OI problema Itamar é que o LetoDb(f) não é simples de fazer a instalação. O netio na distribuição do Minigui Extends é só compilar e rodar.. .
As informações do Letodb(f) estão muito esparramadas e as vezes não são conclusivas.
É difícil você ir num post ler 12 páginas e no final não conseguir rodar a ferramenta.
Tinha que ter um local onde você baixa o negócio pronto. Esse negócio de ficar compilando lib é meio complicado e se você não acompanha o negócio desde o início não consegue. Nem todo mundo tem conhecimento suficiente para isso. Me lembro do Harbour, enquanto não criaram aquela versão compilada lá a night não sei o quê, muita gente sofria para tentar compilar e o negócio e não conseguia. Depois pronto, deslanchou.
Não adianta postar coisas muito avançadas. Normalmente um usuário do meu perfil e temos muitos aqui ( pelas postagens tenho visto colegas que estão desde 2014 tentando) precisa do negócio mais resumido.
De repente é quando postar uma solução, um tutorial, o Toledo trancar aquele post e deixar só o autor postar novamente.. Quando a gente precisar implantar ou estudar o negócio tá resumido ali.
Não consigo compilar as libs, apresenta um monte de erros, pode ser meu harbour. Então se tiver uma opção compilada é só baixar e pronto.
Outra coisa são os conceitos.
Executo o Letodb.exe intsall
beleza vou lá nos serviços ele está lá. Só isso?
Vi você falando em algumas postagens que depois disso tem que rodar Net alguma coisa, tento a rodar a linha aqui e dá erro. Precisa mesmo desse net alguma coisa?
Sabe eu falo disso. De repente um bate pronto assim. No servidor você faz isso e no terminal você faz isso e pronto..
Estou ainda tentando aqui ...

Rubens

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 09:13
por JoséQuintas
rubens escreveu:O netio na distribuição do Minigui Extends é só compilar e rodar.. .


pasta do Harbour, ao gerar o Harbour:

hnnetio.png

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 09:29
por Itamar M. Lins Jr.
Ola!
No caso vc precisa ser mais especifico.
Suas questões são difíceis de entender para mim.
Não consigo compilar as libs, apresenta um monte de erros,

Cadê os erros ?
Net alguma coisa, tento a rodar a linha aqui e dá erro.

O que é net alguma coisa ? Cadê o erro ?
Seja mais claro. Faça postagens como essa que fez agora. Escreva ai sem medo de ser feliz!
O que vc não está entendendo ?
Vc só postou letodb.ini e letodbf.log até agora e reclamou que não está conseguindo êxito, mas preciso(amos) de mais informações.
beleza vou lá nos serviços ele está lá. Só isso?
Depende de vc, do seu conhecimento sobre serviços do windows.
O que vc não entendeu disso ai ? Faça a pergunta, que se eu não souber outros saberão.
Como ativar serviços do windows ? Ai neste caso já não é com LETODB são comandos do WINDOWS.
tasklist -> lista processos
net start, net stop. Ativar e desativar serviços, isso no Windows no Linux são outros comandos.
E o comando sc que remove(apaga) o serviço do letodb[f]
sc delete letodbf_service.

Precisamos saber através das suas perguntas o seu grau de entendimento do assunto, da forma que faz suas perguntas, eu penso que já sabe.
O Letodbf não tem dificuldade nenhuma.
Basta aprender os conceitos.
letodb.exe e o letodb.ini
e a lib librddleto.a que vc linka com sua aplicação.
Apenas esses 3 arquivos.

VC perguntou se pode rodar os arquivos da pasta exemplo(tests) não foi ?
Faça isso antes de perguntar. Compile e rode \tests\test_dbf.prg por exemplo. O que não entender vc pergunta. Se alguém souber vai responder, ajudar com certeza.
Vai fazendo ai, o que tiver duvida ou não souber vc pergunta.
Coloca o seu código ai para nós vermos como está fazendo.
Olhe o exemplo da pasta tests\test_dbf.prg é simples.
/*
* This sample tests working with dbf files
* Just change the cPath value to that one you need.
*/

REQUEST LETO
REQUEST DBFCDX

#include "dbinfo.ch"

Function Main( cPath )
LOCAL aNames := { "Petr", "Ivan", "Alexander", "Pavel", "Alexey", "Elch", ;
                  "Konstantin", "Vladimir", "Nikolay", "Andrey", "Dmitry", "Sergey" }
LOCAL i, aStru, aServerDriver
LOCAL nPort := 2812
FIELD NAME, NUM, INFO, DINFO, MINFO, TINFO

   ALTD()
   SET DATE FORMAT "dd/mm/yy"

   IF Empty( cPath )
      //cPath := "//127.0.0.1:2812/"
      cPath := ""
      RDDSETDEFAULT( "DBFCDX" )
   ELSE
      cPath := "//" + cPath + IiF( ":" $ cPath, "", ":" + ALLTRIM( STR( nPort ) ) )
      cPath += Iif( Right(cPath,1) == "/", "", "/" )
      RDDSETDEFAULT( "LETO" )
   ENDIF

   IF dbCreate( cPath + "test1", { { "NAME",  "C", 10, 0 },;
                                   { "NUM" ,  "N",  4, 0 },;
                                   { "INFO",  "C", 32, 0 },;
                                   { "DINFO", "D",  8, 0 },;
                                   { "TINFO", "@",  8, 0 },;
                                   { "MINFO", "M", 10, 0 } } )
      ? "File has been created"
   ENDIF

   USE ( cPath + "test1" ) NEW
   IF ! NetErr() .AND. ! EMPTY( ALIAS() )
      ? "File has been opened"
   ELSE
      ? "ERROR opening database! -- press any key to quit"
      Inkey( 0 )
      QUIT
   ENDIF
   aStru := dbStruct()
   ? "Fields:", Len( aStru )
   FOR i := 1 TO Len( aStru )
      ? i, aStru[i,1], aStru[i,2], aStru[i,3], aStru[i,4]
   NEXT

   FOR i := 1 TO Len( aNames )
      APPEND BLANK
      REPLACE NAME  WITH aNames[ i ],;
              NUM   WITH i + 1000,;
              INFO  WITH "This is a record number " + Ltrim( Str( i ) ),;
              DINFO WITH Date() + i - 1,;
              MINFO WITH aNames[ i ]
#ifndef __XHARBOUR__
      REPLACE TINFO WITH IIF( i == 6, HB_STRTOTS( "" ), hb_DToT( DATE() + i, TIME() ) )
#else
      REPLACE TINFO WITH IIF( i == 6, STOT( "00000000000000.000" ),;
                                      STOT( DTOS( DATE() + i ) + LEFT( TIME(), 2 ) + SUBSTR( TIME(),4,2) + RIGHT(TIME(),2) + ".321" ) )
#endif
   NEXT
   ? LEN( aNames ), "Records has been added"
   INDEX ON NAME TAG NAME
   ? "INDEX KEY 1:", indexkey( 1 )
   INDEX ON STR( NUM, 4 ) TAG NUM
   ? "INDEX KEY 2:", indexkey( 2 )
   INDEX ON TINFO TAG TS
   ? "INDEX KEY 3:", indexkey( 3 )
   INDEX ON INFO TAG ASH
   ? "INDEX KEY 3:", indexkey( 4 )
   ? "File has been indexed, "
   ?? DBORDERINFO( DBOI_ORDERCOUNT )
   ?? " active orders "
   ?? Iif( DBORDERINFO( DBOI_ORDERCOUNT ) == 4, "- Ok","- Failure" )

   ?
   ? "Press any key to continue..."
   Inkey( 0 )

   i := RecCount()
   ? "Reccount ", i, Iif( i == Len( aNames ), "- Ok","- Failure" )

   DbSetOrder( 0 )
   GO TOP
   ? "go top   ", NUM, NAME, DINFO, Iif( NUM == 1001, "- Ok","- Failure" )
   REPLACE INFO WITH "First", MINFO WITH "First"

   DbGoTo( 5 )
   REPLACE INFO WITH ""

   GO BOTTOM
   ? "go bottom", NUM, NAME, DINFO, Iif( NUM == 1012, "- Ok","- Failure" )
   REPLACE INFO WITH "Last", MINFO WITH "Last"

   ?
   ? 'ordSetFocus( "NAME" )'
   ordSetFocus( "NAME" )
   GO TOP
   ? "go top   ", NUM, NAME, DINFO, Iif( NUM == 1003, "- Ok","- Failure" )

   SKIP
   ? "skip     ", NUM, NAME, DINFO, Iif( NUM == 1005, "- Ok","- Failure" )

   GO BOTTOM
   ? "go bottom", NUM, NAME, DINFO, Iif( NUM == 1008, "- Ok","- Failure" )

   SKIP -1
   ? "skip -1  ", NUM, NAME, DINFO, Iif( NUM == 1012, "- Ok","- Failure" )

   DbSetOrder( 4 )
   DBGOBOTTOM()
   DBSEEK( "", .T. )
   ? "DbSeek( '',.T. )      ", NUM, NAME, DINFO, Iif( NUM == 1005, "- Ok","- Failure" )
   DbSetOrder( 1 )

   DBGOBOTTOM()
   DBSEEK( "Petr", .F. )
   ? "DbSeek( 'Petr',.F. )  ", NUM, NAME, DINFO, Iif( NUM == 1001, "- Ok","- Failure" )

   DBGOBOTTOM()
   DBSEEK( "Petr", .T. )
   ? "DbSeek( 'Petr',.F. )  ", NUM, NAME, DINFO, Iif( NUM == 1001, "- Ok","- Failure" )

   DBGOBOTTOM()
   DBSEEK( "Pe", .T. )
   ? "DbSeek( 'Pe',.T. )    ", NUM, NAME, DINFO, Iif( NUM == 1001, "- Ok","- Failure" )

   DbSetOrder( 3 )
   DBGOBOTTOM()
#ifndef __XHARBOUR__
   DBSeek( hb_DToT( DATE() + 5 ), .T. )
#else
   DBSeek( STOT( DTOS( DATE() + 5 ) + "000000.000" ), .T. )
#endif
   ? "DbSeek( TS,.T. )      ", NUM, NAME, DINFO, Iif( NUM == 1005, "- Ok","- Failure" )

   DBGOBOTTOM()
#ifndef __XHARBOUR__
   DBSeek( hb_DToT( DATE() + 5 ), .F. )
#else
   DBSeek( STOT( DTOS( DATE() + 5 ) + "000000.000" ), .F. )
#endif
   ? "DbSeek( TS,.F. )      ", NUM, NAME, DINFO, Iif( EOF(), "- Ok","- Failure" )
   DbSetOrder( 1 )

   DBGOTOP()
   DBSEEK( "Sergey", .F. )
   ? "DbSeek( 'Sergey',.F. )", NUM, NAME, DINFO, Iif( NUM == 1012, "- Ok","- Failure" )

   DBGOTOP()
   DBSEEK( "Ser", .T. )
   ? "DbSeek( 'Sergey',.T. )", NUM, NAME, DINFO, Iif( NUM == 1012, "- Ok","- Failure" )

   DBGOTOP()
   DBSEEK( "Sergez", .F. )
   ? "DbSeek( 'Sergez',.F. )", NUM, NAME, DINFO, Iif( EOF(), "- Ok","- Failure" )

   SET FILTER TO NUM >= 1004 .AND. NUM <= 1010
   ?
   ? "SET FILTER TO NUM >= 1004 .AND. NUM <= 1010"
   GO TOP
   ? "go top   ", NUM, NAME, DINFO, Iif( NUM == 1005, "- Ok","- Failure" )

   SKIP
   ? "skip     ", NUM, NAME, DINFO, Iif( NUM == 1010, "- Ok","- Failure" )

   GO BOTTOM
   ? "go bottom", NUM, NAME, DINFO, Iif( NUM == 1008, "- Ok","- Failure" )

   SKIP -1
   ? "skip -1  ", NUM, NAME, DINFO, Iif( NUM == 1004, "- Ok","- Failure" )

   ? "Press any key to continue..."
   Inkey( 0 )

   ?
   ? "SET FILTER TO, SET ORDER TO 0"
   SET FILTER TO
   SET ORDER TO 0

   GO TOP
   ? "First record", Iif( ALLTRIM( INFO ) == "First" .AND. MINFO == "First", "- Ok","- Failure" )

   GO BOTTOM
   ? "Last record ", Iif( ALLTRIM( INFO ) == "Last" .AND. MINFO == "Last", "- Ok","- Failure" )

   ?
   ? 'ordSetFocus( "NUM" ), SET SCOPE TO "1009", "1011"'
   ordSetFocus( "NUM" )
   SET SCOPE TO "1009", "1011"

   GO TOP
   ? "go top", NUM, NAME, DINFO, Iif( NUM == 1009, "- Ok","- Failure" )

   SKIP
   ? "skip  ", NUM, NAME, DINFO, Iif( NUM == 1010, "- Ok","- Failure" )

   SKIP
   ? "skip  ", NUM, NAME, DINFO, Iif( NUM == 1011, "- Ok","- Failure" )

   SKIP
   ? "skip  ", NUM, NAME, DINFO, Iif( Eof(), "- Ok","- Failure" )

   dbCloseAll()

   ?
   ? "Press any key to continue..."
   Inkey( 0 )

   IF RDDSETDEFAULT() == "LETO"
      aServerDriver := leto_DbDriver()
   ENDIF
   IF "CDX" $ RDDSETDEFAULT() .OR. ( VALTYPE( aServerDriver ) == "A" .AND. "CDX" $ aServerDriver[ 1 ] )
      USE ( cPath + "test1" ) NEW
      i := 0
      ? "auto opened index Tags:"
      DO WHILE ! Empty( Ordkey( ++i ) )
         ? i, ordKey( i )
      ENDDO
      OrdSetFocus( 3 )
      OrdDestroy( "TS" )
      ? "Indexord after OrdDestroy():", INDEXORD(), IIF( INDEXORD() == 0, " - Ok", " - Failure" )
   ENDIF

   dbCloseAll()
   ?
   ? "dropping test DBF: "
   ?? Iif( DbDrop( cPath + "test1" ), "- Ok","- Failure" )

   ?
   ? "Press any key to finish ..."
   Inkey( 0 )

Return Nil



Faça perguntas diretas, não apenas reclame e se eu não souber outras pessoas sabem responder.

Saudações,
Itamar M. Lins Jr.

Atualização da HbNetio

MensagemEnviado: 31 Out 2018 10:15
por rubens
Tá vou fazer o seguinte..
Como eu mesmo reclamei da mistura de coisas se continuar neste post aqui vai virar mais mistura ainda..
Vou criar um tópico novo tentando instalar e colocar as fases do processo.
Obrigado