Fórum Conexao TCP #456266

23/09/2013

0

Boa tarde,

Estou precisando criar uma rotina onde terei minha aplicação no servidor de banco de dados e terei meus terminais, um desses terminais vai ter o banco de dados bkp.

Ai é que vem a duvida, como faço para monitorar a conexão TCP, ou seja, a aplicação vai estar rodando, quando a conexão cair com o servidor quero acionar este terminal local que esta como banco de dados apenas com os cadastros atualizados.

Se alguém puder me dar uma dica fico agradecido.

MArcos
Marcos Amaral

Marcos Amaral

Responder

Posts

23/09/2013

Marcos Amaral

Complementando, estou usando o Delphi XE3....
Responder

Gostei + 0

24/09/2013

Marcos Amaral

Bom dia,

Esse fórum aqui já foi bom.........


Grato


Responder

Gostei + 0

24/09/2013

Marcos Oliveira

Bom dia Amigo! Este fórum continua bom. Só que nem sempre conseguimos responder com a rapidez que você precisa.

Segue abaixo um código que creio irá te ajudar.

// Você precisará de um componente TIdIcmpClient (IndyClients)
function TForm1.Pingar(IP: String): Boolean;
begin
     Result := True;
     try
        IdICMPClient1.Host := IP;
        IdICMPClient1.ReceiveTimeout := 1000; // Configure com o tempo que achar conveniente.
        IdICMPClient1.Ping;
     except
        Result := False;
     end
end;

// Para monitorar, é só usar um Timer.
procedure TForm1.Button1Click(Sender: TObject);
begin
     if Pingar(edit1.text) then
        ShowMessage('Ok')
     else
        ShowMessage('Erro');
end;



Att,

Marcos
Responder

Gostei + 0

24/09/2013

Marcos Amaral

Bom dia, Marcos,

Então meu amigo estou criando outro sistema onde terei um servidor no escritório do cliente e outro servidor como se fosse BKP no local, esse segundo servidor vai funcionar para controle de equipamentos e no local, e toda a base de dados vai estar no servidor principal.

O que eu preciso fazer quando essa comunicação venha cair vou acionar o segundo servidor. Trocando todas as conexões automaticamente tanto do servidor como dos clients.

Mais uma vez agradeço sua ajuda Marcão..


Abraços
Responder

Gostei + 0

24/09/2013

Marcos Oliveira

Entendi sua situação. Com a função que te passei, você consegue verificar se o servidor caiu. Se sim, você deve reconfigurar a conexão (alterar o ip do host) do seu sistema para o servidor alternativo.
Responder

Gostei + 0

24/09/2013

Marcos Amaral

Marcao,


Muito obrigado era isso mesmo que eu queria.....

Abraços
Responder

Gostei + 0

30/09/2013

Marcos Amaral

Marcao, boa noite, desculpa te incomodar.

Fiz a rotina e quando pingo, diz que o acesso negado.

O que pode ser?

Abraços

Marcos

Responder

Gostei + 0

01/10/2013

Marcos Oliveira

Marcos, por acaso você consegue acessar a rede normalmente? Tenta dar um ping pelo CMD, porque aí vamos saber se problema é no Delphi, ou na sua rede. Se der erro ao pingar pelo CMD, então o problema é na rede.

Att,

Marcos
Responder

Gostei + 0

01/10/2013

Marcos Amaral

Bom dia Marcao,

Pelo cmd pingo certinho, tanto minha maquina local como a maquina remota, nesta maquina remota pingo pelo Host sisgfrotamg.zapto.org.

Agradeço sua ajuda, sabe como é marinheiro de primeira viagem....

abraços

Responder

Gostei + 0

01/10/2013

Marcos Oliveira

Marcos, tentei pingar o host que você me passou, e funcionou perfeitamente, tanto pelo cmd quanto pelo exemplo que te passei.
Você tentou executar seu projeto como administrador?

Att,

Marcos
Responder

Gostei + 0

01/10/2013

Marcos Amaral

Não eu fiz a rotina que você me passou e deu a mensagem access denied. Fiz em casa, o roteador esta liberado tudo certinho tanto que pelo componente do zeos consigo conectar certinho.

Estranho
Responder

Gostei + 0

01/10/2013

Marcos Amaral

Olha o código, unica coisa que coloquei foi a porta que é do FireBird 3050

function TForm1.Pingar(IP: String): Boolean;
begin
Result := True;
try
IdICMPClient1.Host := IP;
IdICMPClient1.ReceiveTimeout := 1000; // Configure com o tempo que achar conveniente.
IdICMPClient1.Port := 3050;
IdICMPClient1.Ping;
except
Result := False;
end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Pingar(edit1.text) then
ShowMessage('Ok')
else
ShowMessage('Erro');
end;
Responder

Gostei + 0

01/10/2013

Marcos Amaral

no IP coloquei o sisgfrotamg.zapto.org
Responder

Gostei + 0

01/10/2013

Marcos Oliveira

Muito estranho mesmo... Peguei agora a sua rotina, criei um novo pronto, coloquei o host, e tá pingando normal...
Até mudei o host pra ver se o programa sempre retornava true, mas aí deu erro. Voltei pro seu host, e funcionou.
Qual Delphi você usa?
Responder

Gostei + 0

01/10/2013

Marcos Amaral

XE3 Update 2
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar