Testar conexão com vários IPs Mysql

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
depaula.jau
Usuário Nível 2
Usuário Nível 2
Mensagens: 98
Registrado em: 15 Mai 2007 17:07
Localização: JAU

Testar conexão com vários IPs Mysql

Mensagem por depaula.jau »

Meus caros, Bom dia!!!

Uso : Harbour MiniGUI Extended Edition 17.03 + BCC5

Eu tenho uma necessidade e gostaria de saber se algum pode me ajudar.

Tenho um servidor Linux com Mysql que acesso de duas formas:
192.16... Para acesso interno e
201.18... para acesso externo.

Pois bem, eu queria fazer um laço testeando os IPs na sequencia e verificando qual esta com acesso. Vou postar o código da forma com que eu tentei fazer para vcs entenderem a necessidade.

Pseudocódigo:

Código: Selecionar todos

* // Procedure de Conexão com BD Mysql
Procedure ProcedimentoDeConexaoDB()
        LOCAL lConect
        WaitWindow('Aguarde!, Conectando-se ao Servidor:'+oHostName)
*       // Conecta ao banco mediante parametro
        lConect:=ConectaMySql()

       If !lConect
           BEGIN INI FILE "Parametros.ini"
              GET oHostName  SECTION "Conexao"  ENTRY "Servidor1"
           END INI
           frmPrincipal.STATUSITEM.Item(4):="Servidor1:"+oHostName+" ["+oDataBase+"]"
           lConect:=ConectaMySql()
       EndIf

       WaitWindow()
       If !lConect
            MsgInfo('Desculpe! Não foi possível se conectar ao servidor.')
	    Quit
       EndIf
       Return
*----------------------------------------
* Função para Conectar na Base MySql
Procedure ConectaMySql()
         LOCAL cQuery, aListaBancos
         LOCAL lExiste:=.F.
*        // Verifica se já está conectado
         If oServer != Nil
            Return(.F.)
         Endif
*        // Abre Conexao com MySql
         oServer := TMySQLServer():New(oHostName, oUser, oPassWord )
         If oServer:NetErr()
            Return(.F.)
         EndIf   

*        // Cria uma lista de banco
         aListaBancos:= oServer:ListDBs()
*        // Verifica se o Banco já Existe
         FOR i := 1 TO Len( aListaBancos )
            If Lower( AllTrim( aListaBancos[i] ) ) == Lower( AllTrim( oDataBase ) )   // Pesquisa o                Banco em Letras Minusculas
               lExiste:=.T.
               Exit
            EndIf
         Next
*        // Se existe, Seleciona
         If lExiste
            oServer:SelectDB( oDataBase )
         Else
            MsgInfo("Banco de Dados não Instalado, consulte o Administrador","Conexão")
            Release Window All
         EndIf
         Return(.T.)
Um grande abraço

Marcelo de Paula
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Testar conexão com vários IPs Mysql

Mensagem por Itamar M. Lins Jr. »

Ola!

Código: Selecionar todos

        // Abre Conexao com MySql
  oServer := TMySQLServer():New(oHostName, oUser, oPassWord )
   If oServer:NetErr()
       Return(.F.)
   EndIf
 
Basta ver o tipo de erro aqui, oServer:NetErr().
E tentar com outro IP.
Pode usar dois IFs ou o FOR NEXT entre outras formas

Código: Selecionar todos

    // Abre Conexao com MySql
FOR N := 1 TO 2
  cIP := iif(n==1,"192...","2xx..")

  oServer := TMySQLServer():New(cIP, oUser, oPassWord )  

   If oServer:NetErr()
       If N > 2
          return(.F.)
       endif
   EndIf

NEXT

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Testar conexão com vários IPs Mysql

Mensagem por JoséQuintas »

Isso é pra testar o aplicativo dentro e fora da máquina de desenvolvimento?
Uso algo parecido com isto:

Código: Selecionar todos

cServer := iif( IsMaquinaJPA(), "conexaoLocal", "conexaoRemota" )
E na função, faça do jeito que achar melhor:

Código: Selecionar todos

FUNCTION IsMaquinJPA()

   DO CASE
   CASE GetEnv( "COMPUTER_NAME" ) == "MAQUINAJPA" 
   CASE GetEnv( "USER_NAME" ) == "JOSEQUINTAS"
   CASE SerialHD() == "XXXXX"
   CASE File( "d:\harbour\bin\harbour.exe" )
   OTHERWISE
    RETURN .F.
   ENDCASE
   RETURN .T.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder