Clipper On Line • Ver Tópico - Usar Servidor de DNS no NETIO

Usar Servidor de DNS no NETIO

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Usar Servidor de DNS no NETIO

Mensagempor asimoes » 19 Jul 2010 18:18

Senhores,

alguém já conseguiu usar um servidor de dns tipo no-ip ou dyndns com o netio?

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Re: Usar Servidor de DNS no NETIO

Mensagempor sygecom » 19 Jul 2010 18:36

Eu uso NO-IP sem problemas, apenas libero a porta do letodb no servidor redirecionando para o servidor onde está o letodb rodando (porta.: 2812 )
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com
Avatar de usuário

sygecom
Membro Master

Membro Master
 
Mensagens: 6547
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 55 vezes

Re: Usar Servidor de DNS no NETIO

Mensagempor asimoes » 19 Jul 2010 21:20

Olá SYGECOM,

No LetoDB eu já faço assim, eu queria saber é no HB_NETIO
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Re: Usar Servidor de DNS no NETIO

Mensagempor asimoes » 19 Jul 2010 22:34

Senhores,

Consegui acessar dbfs usando dyndns, o problema é que algumas funções do netio não funcionam com este tipo de acesso, funcionam somente com ip local. A netio deverá superar estes entraves, por hora o letodb está mais completo e funcional. Por exemplo para saber se um indice existe na pasta onde os dbs estão, criei uma função chamada existeindice(cIndice) na aplicação servidora.

IF!Netio_FuncExec("EXISTEINDICE","BOLETOS.CDX")
  CriaIndice("BOLETOS.CDX")
ENDIF


No letodb tem a função leto_file()

Resumindo, no letodb posso usar todas as funções que ele oferece usando ip local ou dns host,
no NetIO, somente com ip local, me corrijam se eu estiver errado, pelo menos fiquei tentando descobrir por horas e nada. Falta mais documentação sobre o uso desta lib.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Re: Usar Servidor de DNS no NETIO

Mensagempor clipsis » 18 Ago 2010 12:21

Ola, boa tarde!

Antes de mais nada, sou iniciante em Harbour.

Vi os exemplos de clientes para NETio, segui da forma como aparecem.
Porém quando compilo apresenta a seguinte mensagem:

undefined reference to `HB_FUN_NETIO_FUNCEXEC'

uso uma expressão parecida como:

IF!Netio_FuncExec("EXISTEINDICE","BOLETOS.CDX") 
  CriaIndice("BOLETOS.CDX")
ENDIF


Mudando apenas o nome da função de : EXISTEINDICE para LOCALIZAINDICE

Preciso colocar algum comando no PRG ou no arquivo HBP, para resolver ?

Fico no aguardo e obrigado.
Clipper 5.2/Blinker
Harbour 3.0/Mingw
clipsis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 78
Data de registro: 02 Jun 2010 11:53
Cidade/Estado: brasil
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Usar Servidor de DNS no NETIO

Mensagempor asimoes » 18 Ago 2010 13:18

Olá Clipsis,

Este programa que eu fiz é um servidor NetIO veja a função LOCALIZAINDICE(cIndice) no fonte SERVIDOR.PRG que verifica se existe o indice na pasta db\ como eu uso:

Na sua aplicação ficaria assim:
Na função Netio_FuncExec o primeiro parametro é o nome da função que está no servidor e o segundo parametro é o parametro passado para a função LOCALIZAINDICE

Adapte o fonte SERVIDOR.PRG a sua necessidade.

 IF !Netio_FuncExec("LOCALIZAINDICE","PONTO.CDX")
      NetUse(cServer,cDataBase,.T.)   
      INDEX ON DTOS(DATA) TAG I001  TO (cServer+"PONTO")
      INDEX ON DTOS(DATA) TAG I002 DESCEND TO (cServer+"PONTO")
      PONTO->(DBCLOSEAREA())
ENDIF


Fonte: SERVIDOR.PRG

#include "hwgui.ch"
#include "common.ch"
#include "windows.ch"
#include "guilib.ch"

FUNCTION Main( nPort, cIfAddr, cRootDir, xRPC, ... )

LOCAL   hWrite := Hash(), hRead:= HB_ReadIni( "CONFIG.INI" )
LOCAL   oTrayMenu
LOCAL  oIconIni:=HIcon():AddResource("ICON_2")
PRIVATE pListenSocket, c_Port:="2816", c_Path:="\DB", c_Addr:=Verifica_Ip()
REQUEST HB_DATETIME
MEMVAR->oIcon1     :=HIcon():AddResource("ICON_1")
MEMVAR->oIcon2     :=HIcon():AddResource("ICON_2")
MEMVAR->oMainWindow:=Nil
MEMVAR->oTimer     :=Nil

   IF !FILE("CONFIG.INI")
      hWrite["MAIN" ]           := Hash()
      hWrite["MAIN" ]["Desc" ]  := "Sistema Servidor - NetIO"
      hWrite["MAIN" ]["Ver"  ]  := "Versao 1.2"

      hWrite["CONFIGURACAO" ]             := Hash()
      hWrite["CONFIGURACAO" ]["Port"]     := c_Port
      hWrite["CONFIGURACAO" ]["Path"]     := c_Path
      hWrite["CONFIGURACAO" ]["Addres"]   := c_Addr
      HB_WriteIni( "CONFIG.INI", hWrite,"--- Inicio ---", "--- Fim ---" )
   ELSE
      c_Port:=hRead["CONFIGURACAO"]["Port"]
      c_Path:=hRead["CONFIGURACAO"]["Path"]
      c_Addr:=hRead["CONFIGURACAO"]["Addres"]
   ENDIF

   cServidorDB:='//'+c_Addr+':'+c_Port+'/'
   
   INIT WINDOW MEMVAR->oMainWindow MAIN TITLE "Servidor NetIO - "+cServidorDB
   
   pListenSocket := NetIO_mtServer( VAL(c_Port),c_Addr,,.T.)

   IF Empty(pListenSocket)
      MsgInfo( "Servidor não pode ser inicializado em "+c_Addr+":"+c_Port)
      EndWindow()
   ENDIF

   CONTEXT MENU oTrayMenu
      MENUITEM "Parar o Servidor"      ACTION PararServidor()
      MENUITEM "Reiniciar o Servidor"  ACTION IniciarServidor()
      SEPARATOR
      MENUITEM "Sair"                  ACTION Sair()
   ENDMENU

   Liga_Timer(MEMVAR->oMainWindow,.T.)

   MEMVAR->oMainWindow:InitTray( oIconIni,,oTrayMenu,"Servidor NetIO - "+cServidorDB )

   ACTIVATE WINDOW oMainWindow NOSHOW
   oTrayMenu:End()
      
RETURN Nil

FUNCTION MudaIcone   
STATIC nIcon 
MEMVAR oMainWindow
MEMVAR oIcon1
MEMVAR oIcon2
   IF nIcon = Nil
      nIcon:=1
   ENDIF
   Liga_Timer(oMainWindow,.F.)
   nIcon := IF(nIcon > 2, 1, nIcon)
   Muda_Icone(IF(nIcon=1,oIcon1,oIcon2))
   nIcon++
   Liga_Timer(oMainWindow,.T.)
RETURN Nil

FUNCTION Muda_Icone(oIconeX, cTexto)
LOCAL oIcon := oIconeX
MEMVAR oMainWindow   
   ShellModifyIcon( oMainWindow:handle, oIcon:handle)
   oMainWindow:Refresh()
RETURN Nil

FUNCTION Liga_Timer(oJanela,lLiga)
MEMVAR oTimer
   IF lLiga
      SET TIMER oTimer of oJanela VALUE 1000 ACTION {|| MudaIcone() }
   ELSE
      oJanela:oTimer:End()   
   ENDIF
RETURN Nil

FUNCTION Sair
MEMVAR oMainWindow
   Liga_Timer(oMainWindow,.F.)   
   oMainWindow:oTimer:End()   
   IF MsgNoYes("Deseja Realmente Sair do Programa ?","Aviso do Sistema")
      PararServidor()
      Liberar()
   ELSE
      Liga_Timer(oMainWindow,.T.)
      RETURN Nil
   ENDIF
RETURN Nil

FUNCTION Liberar
   EndWindow() 
   ExitProcess()
RETURN Nil

FUNCTION PararServidor
MEMVAR pListenSocket
   IF !Empty( pListenSocket )
      NetIO_ServerStop( pListenSocket )
      pListenSocket := NIL
      //MsgInfo( "Servidor foi parado em "+c_Addr+":"+c_Port)
   ENDIF
RETURN Nil

FUNCTION IniciarServidor
MEMVAR pListenSocket
   IF Empty(pListenSocket)
      PararServidor()
      pListenSocket := NetIO_mtServer( VAL(c_Port),c_Addr,,.T.)
      IF Empty(pListenSocket)
         MsgInfo( "Servidor não pode ser inicializado em "+c_Addr+":"+c_Port)
         EndWindow()
      ELSE
         MsgInfo( "Servidor foi inicializado em "+c_Addr+":"+c_Port)
      ENDIF
   ENDIF
RETURN Nil

FUNCTION Verifica_Ip
LOCAL aHosts, cName, cEstacao:=netname(.f.)
hb_InetInit()
aHosts := hb_InetGetHosts( cEstacao )
IF aHosts == NIL
   aHosts := hb_InetGetAlias( cEstacao )
ENDIF
IF Empty(aHosts)
   aHosts := hb_InetGetAlias( cEstacao )
ENDIF
hb_InetCleanup()
RETURN  ahosts[1]

FUNCTION LOCALIZAINDICE(cIndice)
LOCAL lOk:=.F.
IF FILE("DB\"+cIndice)
   lOk:=.T.
ENDIF
RETURN lOk

#pragma BEGINDUMP

#define _WIN32_IE      0x0500
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT   0x0400
#include <shlobj.h>
#include <windows.h>
#include <commctrl.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC( SHOWERROR )

{
   LPVOID lpMsgBuf;
   DWORD dwError  = GetLastError();

   FormatMessage(
      FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
      NULL,
      dwError,
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
      (LPTSTR) &lpMsgBuf,
      0,
      NULL
   );
   
   MessageBox(NULL, (LPCSTR)lpMsgBuf, "Shutdown", MB_OK | MB_ICONEXCLAMATION);
   // Free the buffer.
   LocalFree( lpMsgBuf );
}

HB_FUNC( ENABLEPERMISSIONS )

{
   LUID tmpLuid;
   TOKEN_PRIVILEGES tkp, tkpNewButIgnored;
   DWORD lBufferNeeded;
   HANDLE hdlTokenHandle;
   HANDLE hdlProcessHandle = GetCurrentProcess();

   OpenProcessToken(hdlProcessHandle, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hdlTokenHandle);

   LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &tmpLuid);

   tkp.PrivilegeCount            = 1;
   tkp.Privileges[0].Luid        = tmpLuid;
   tkp.Privileges[0].Attributes  = SE_PRIVILEGE_ENABLED;

   AdjustTokenPrivileges(hdlTokenHandle, FALSE, &tkp, sizeof(tkpNewButIgnored), &tkpNewButIgnored, &lBufferNeeded);
}

HB_FUNC( EXITWINDOWSEX )

{
   hb_retl( ExitWindowsEx( (UINT) hb_parni( 1 ), (DWORD) hb_parnl( 2 ) ) );
}

HB_FUNC( LOADTRAYICON )
{
   HICON himage;
   HINSTANCE hInstance  = (HINSTANCE) hb_parnl(1);  // handle to application instance
   LPCTSTR   lpIconName = (LPCTSTR)   hb_parc(2);   // name string or resource identifier

   himage = (HICON) LoadImage( hInstance ,  lpIconName , IMAGE_ICON, 16, 16, LR_SHARED ) ;

   if (himage==NULL)
   {
      himage = (HICON) LoadImage( hInstance , lpIconName , IMAGE_ICON, 0, 0, LR_LOADFROMFILE + LR_DEFAULTSIZE ) ;
   }

   hb_retnl ( (LONG) himage );
}

HB_FUNC( LOADMAINICON )
{
   HICON himage;
   HINSTANCE hInstance  = (HINSTANCE) hb_parnl(1);  // handle to application instance
   LPCTSTR   lpIconName = (LPCTSTR)   hb_parc(2);   // name string or resource identifier

   himage = (HICON) LoadImage( hInstance , lpIconName , IMAGE_ICON, 0, 0, LR_DEFAULTSIZE ) ;

   if (himage==NULL)
   {
      himage = (HICON) LoadImage( hInstance , lpIconName , IMAGE_ICON, 0, 0, LR_LOADFROMFILE + LR_DEFAULTSIZE ) ;
   }

   hb_retnl ( (LONG) himage );
}

static HWND GetStartButton(void);

static void ShowNotifyInfo(HWND hWnd, BOOL bAdd, HICON hIcon, LPSTR szText, LPSTR szInfo, LPSTR szInfoTitle);

HB_FUNC ( SHOWNOTIFYINFO )
{
   ShowNotifyInfo( (HWND) hb_parnl(1), (BOOL) hb_parl(2), (HICON) hb_parnl(3), (LPSTR) hb_parc(4),
         (LPSTR) hb_parc(5), (LPSTR) hb_parc(6) );
}

static void ShowNotifyInfo(HWND hWnd, BOOL bAdd, HICON hIcon, LPSTR szText, LPSTR szInfo, LPSTR szInfoTitle)
{
   NOTIFYICONDATA nid;

   ZeroMemory( &nid, sizeof(nid) );

   nid.cbSize      = sizeof(NOTIFYICONDATA);
   nid.hIcon      = hIcon;
   nid.hWnd      = hWnd;
   nid.uID         = 0;
   nid.uFlags      = NIF_INFO | NIF_TIP | NIF_ICON;
   nid.dwInfoFlags      = NIIF_INFO;

   lstrcpy( nid.szTip, TEXT(szText) );
   lstrcpy( nid.szInfo, TEXT(szInfo) );
   lstrcpy( nid.szInfoTitle, TEXT(szInfoTitle) );

   if(bAdd)
      Shell_NotifyIcon( NIM_ADD, &nid );
   else
      Shell_NotifyIcon( NIM_DELETE, &nid );

   if(hIcon)
      DestroyIcon( hIcon );
}

HB_FUNC ( SETSTARTBUTTONIMAGE )
{
   HWND hButton = GetStartButton();
   HDC  hDCButton = GetDC(hButton);
   HDC  hDcCompatibleButton;
   RECT rc;
   int  nWidth, nHeight;

   HBITMAP hBitmap, hBitmapOld;
   BITMAP bitmap;

   GetWindowRect(hButton, &rc);
   nWidth = rc.right - rc.left;
   nHeight = rc.bottom - rc.top;

   hDcCompatibleButton = CreateCompatibleDC(hDCButton);

   hBitmap = (HBITMAP)LoadImage (NULL, hb_parc(1), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

   hBitmapOld = (HBITMAP)SelectObject(hDcCompatibleButton, hBitmap);
   GetObject(hBitmap, sizeof(BITMAP), &bitmap);

   if (nWidth > bitmap.bmWidth - 3 && nWidth < bitmap.bmWidth + 3 && nHeight > bitmap.bmHeight - 3 && nHeight < bitmap.bmHeight + 3)
      BitBlt(hDCButton, 0, 0, nWidth, nHeight, hDcCompatibleButton, 0, 0, SRCCOPY);
   else
      StretchBlt(hDCButton, 0, 0, nWidth, nHeight, hDcCompatibleButton, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);

   SelectObject(hDcCompatibleButton, hBitmapOld);

   DeleteDC(hDcCompatibleButton);
   DeleteDC(hDCButton);
   DeleteObject(hBitmap);
}

static HWND GetStartButton()
{
   static HWND hKnownButton=0;
   HWND hTaskBar, hButton;

   hTaskBar = FindWindow( "Shell_TrayWnd", NULL );
   hButton = GetWindow( hTaskBar, GW_CHILD );

   if (hButton)
      hKnownButton = hButton;
   else
      hButton = hKnownButton;

   return hButton;
}

HB_FUNC( GETKEYBOARDMODE )
{
   HKL kbl;
   HWND CurApp;
   DWORD idthd;
   int newmode;

   CurApp=GetForegroundWindow();
   idthd=GetWindowThreadProcessId(CurApp,NULL);
   kbl=GetKeyboardLayout(idthd);
   newmode=(int)LOWORD(kbl);
   hb_retnl(newmode);
}

#pragma ENDDUMP
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Re: Usar Servidor de DNS no NETIO

Mensagempor clipsis » 18 Ago 2010 13:38

Olá, ASimoes! Obrigado pelo resposta.

Mas acho que vc não entendeu. Acontece que quando vou compilar minha aplicação cliente, está dando erro ainda na compilação.

Apresenta a mensagem: undefined reference to `HB_FUN_NETIO_FUNCEXEC'
Como se não estivesse achando a rotina
Clipper 5.2/Blinker
Harbour 3.0/Mingw
clipsis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 78
Data de registro: 02 Jun 2010 11:53
Cidade/Estado: brasil
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Usar Servidor de DNS no NETIO

Mensagempor asimoes » 18 Ago 2010 13:54

Olá,

Você tem que incluir a lib hbnetio

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Usar Servidor de DNS no NETIO

Mensagempor roberto-ctba » 20 Out 2011 11:15

bom dia.

Estou testando a hbnetio.
Gostaria de saber o que preciso para deixar em execução no servidor para que eu conecte via remoto na base de dados.

Caso os colegas tiverem um passo-a-passo, sobre esse recurso, portas aberta no servidor, router agradeceria muito.
grato pela atenção.

Roberto
Harbour 3.0 Minigui Extended atual.
roberto-ctba
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 09 Jul 2005 13:32
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Usar Servidor de DNS no NETIO

Mensagempor rochinha » 28 Abr 2012 13:13

Amiguinhos,

Voces conseguiram alguma coisa.

Gsotariam de compartilhar. Estou na peleja e não obtive êxito ao testar hbNetIO.

Para colocar as bases em modo servidor bastará ativar o DBF Server Lights e jogar as tabelas na pasta interna DATA.

Ao testar com hbNetIO do Harbour 3.1 até revisão 17025 obtive corrupção dos data inutilizando a tabela.

Ao usar com hbNetIO do Harbour 3.1, revisão 17222 o programa trava logo na conecção e não segue em frente até que aconteça stop no DBF Server Lights.

Ao linkar apenas adicionei a hbNetIO.lib e não usei modo console.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4120
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 443 vezes
Mens.Curtidas: 172 vezes

Usar Servidor de DNS no NETIO

Mensagempor fladimir » 02 Mai 2017 21:03

ASimoes escreveu:
"Resumindo, no letodb posso usar todas as funções que ele oferece usando ip local ou dns host,
no NetIO, somente com ip local, me corrijam se eu estiver errado, pelo menos fiquei tentando descobrir por horas e nada. Falta mais documentação sobre o uso desta lib."


Sobre isto Alexandre a conclusão q vc chegou é esta mesmo então?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour 3.4.0dev (4541270) (2016-06-28 07:05) | Console | MINGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour 3.2 | MinGW | Xailer 4.0.2 | MariaDB Nativo | Outros via ADO | FastReport
MOBILE Android/IOS e WEB - Outros
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2212
Data de registro: 15 Nov 2006 19:21
Curtiu: 17 vezes
Mens.Curtidas: 124 vezes

Usar Servidor de DNS no NETIO

Mensagempor asimoes » 03 Mai 2017 18:55

Fladimir,

Eu deixei o letodb de lado por conta daquele problema do indice, não sei se já foi resolvido, continuo usando hbnetio
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3906
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 268 vezes
Mens.Curtidas: 183 vezes

Usar Servidor de DNS no NETIO

Mensagempor fladimir » 03 Mai 2017 19:58

Obrigado, só queria criar um #command pro file() pq pra ver se tem o arquivo no servidor eu teria q trocar minhas chamadas pra colocar o net:// antes e se fizer um #command facilitaria, seria isso mesmo?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


DESKTOP CONSOLE Harbour 3.4.0dev (4541270) (2016-06-28 07:05) | Console | MINGW | DBF | CDX | FastReport | MySQL
DESKTOP VISUAL... Harbour 3.2 | MinGW | Xailer 4.0.2 | MariaDB Nativo | Outros via ADO | FastReport
MOBILE Android/IOS e WEB - Outros
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2212
Data de registro: 15 Nov 2006 19:21
Curtiu: 17 vezes
Mens.Curtidas: 124 vezes

Usar Servidor de DNS no NETIO

Mensagempor Itamar M. Lins Jr. » 05 Mai 2017 10:53

Ola!
Eu deixei o letodb de lado por conta daquele problema do indice, não sei se já foi resolvido,

Isso e muito mais coisas foram resolvidas usando o LetodbF(fork) do Elch.
Muito mais rápido o acesso e com todas as funções de arquivos funcionando e outras que não tem no Letodb...
O Letodbf roda 2(dois) daemons simultaneamente no servidor deixando a conexão ainda mais rápida... só alegria.
Mas para quem ainda está no xHarbour isso não funciona, melhor ir de NetIO mesmo.
'Under the hood' works now a *TWO-socket* TCP connection ( if client application is MultiThread compiled ),
enabling e,g, much faster data writes to the server.
Available is on demand an extreme fast LZ4 compress- and Blowfish-encrypt-able network traffic.
LetoDBf client lib ( used by your application ) became fully MultiThread save, each thread opens its own
connection to the server. Threads, threads threads .., wherever you look.

    + compression for LetoFileWrite() and LetoMemoWrite()
    % increase max receive block size: 0x7FFFFFFF aka 2GB - 32MB
    ; may test such big blocks handles


4.2.4 Compression LZ4 / ZLib

Default is to use highspeed realtime LZ4 compression algorithm, but stoneage BCC 5.5 compiler cannot use it !
This can be changed to classic ( slower! ) ZLib compression by outcommenting with set a < # > into first position
of the corresponding .hbp files, found at very top the line with: "#-env:__LZ4=yes"
I would very recommend lightning fast LZ4.
Re-compile both!! server executable and client library. This must fit together, a server with LZ4 won't understand
a client application with ZLib.

Additional remark: at least stoneage old BCC 5.5 had problems with using LZ4, so it is outcommented for all BCC
versions. If you want to try it with a newer BCC version you have to remove that: "{!bcc}" in the HBP files.


Essas aqui, nem tive tempo de colocar em produção/testar.
     Leto_FCopyToSrv( cLocalFileName, sServerFileName[, nStepSize ] )
                                                               ==> lSuccess
      Leto_FCopyFromSrv( cLocalFileName, sServerFileName[, nStepSize ] )
                                                               ==> lSuccess
Copy a file from/ to client to/ from server, where:
<cLocalFileName> is filename at client side,
<sServerFileName> is filename at server which can contain connection info "//IP:port/".
Optional <nStepSize> determine the size of bytes to be copied with one step, default if
not given is 1 MB.
<sServerFileName> can only contain prefix: "mem:" for files in RAM,
<cLocalFileName> can contain any redirector prefix known by Harbour.
A simple backup:
    aArr := Leto_Directory( "*" )
    AEval( aArr, { |aItem| Leto_FCopyFromSrv( aItem[1], aItem[1] } )
Copy from a logged into HbNetIO server a file to LeoDBf located in RAM:
    Leto_FCopyToSrv( "net:hbnetio.txt", "mem:RAMfile.txt" )


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 3361
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 94 vezes
Mens.Curtidas: 151 vezes

Usar Servidor de DNS no NETIO

Mensagempor JoséQuintas » 25 Jun 2017 21:24

Amiguinhos,
Voces conseguiram alguma coisa.
Gsotariam de compartilhar. Estou na peleja e não obtive êxito ao testar hbNetIO.
Para colocar as bases em modo servidor bastará ativar o DBF Server Lights e jogar as tabelas na pasta interna DATA.
Ao testar com hbNetIO do Harbour 3.1 até revisão 17025 obtive corrupção dos data inutilizando a tabela.
Ao usar com hbNetIO do Harbour 3.1, revisão 17222 o programa trava logo na conecção e não segue em frente até que aconteça stop no DBF Server Lights.
Ao linkar apenas adicionei a hbNetIO.lib e não usei modo console.


Não entendi direito. inventaram um hbnetio só pra minigui?

O servidor hbnetio do Harbour vém pronto.

Cheguei a usar através de no-ip, mas só pra teste, e funcionou.

Aonde estou usando, instalei há alguns anos, nem lembro mais sobre a configuração... rs
Mas com certeza, Harbouir 3.4.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9896
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 626 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro