Página 1 de 1

Testar conexão com vários IPs Mysql

Enviado: 04 Set 2017 11:21
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

Testar conexão com vários IPs Mysql

Enviado: 04 Set 2017 13:14
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.

Testar conexão com vários IPs Mysql

Enviado: 04 Set 2017 13:35
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.