Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2005
killaton killaton is offline
Miembro
 
Registrado: mar 2005
Ubicación: Argentina
Posts: 14
Poder: 0
killaton Va por buen camino
Exclamation como hacer un ping....

Hola gente ....

Ante todo muchas gracias por su voluntad y como decimos por aqui por su buena onda...

He encontra do por ahi el codigo para realizar un PING en tiempo de ejecucion desde Delphi y saber de esta manera si el host a pinguear esta encendigo (que es en definitiva lo que necesito saber).

El problema es que por alguna razon no funciona.... por ejemplo.

1- Si el Host existe ? la linea Ping.ReplyStatus.BytesReceived devuelve 0.
y por lo poco que entiendo si existe deberia devolverme un entero mayor a 0.
2- Si el HOST no existe? me da un error SOCKET error #110001 Host not found.
hay forma de evitar este error y que me permita seguir el funcionamiento de mi aplicativo?

Les paso el codigo....

var

Ping:TIdIcmpClient;
rango,direcciones:String;
seccion,I:integer;

begin

Rango := InputBox('Ingrese la IP a realizar el PING...','Direccion IP','');

Ping := TIdIcmpClient.Create(nil);

Ping.BufferSize :=8192;

Ping.ReceiveTimeout := 200;

Showmessage('Procesando... La tarea puede tardar unos minutos');


Ping.Host := Rango;


Showmessage('Probando con '+Ping.Host);

Ping.Ping;

Ping.Receive(500);

showmessage(inttostr(Ping.ReplyStatus.BytesReceived));

showmessage(inttostr(Ping.TTL));

If Ping.ReplyStatus.BytesReceived <> 0 Then
begin


Showmessage(' - Respuesta de: '+Ping.ReplyStatus.FromIpAddress);

Showmessage(' >> Bytes recibidos: '+IntToStr(Ping.ReplyStatus.BytesReceived));

Direcciones := Direcciones +' - '+Ping.ReplyStatus.FromIpAddress;
end;


Showmessage(Direcciones);


Showmessage('Pulse ENTER para salir');

Ping.Destroy;

end;

desde ya mil gracias por todo... a quienes puedan darme una mano.
  #2  
Antiguo 24-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por killaton
Si el HOST no existe? me da un error SOCKET error #110001 Host not found.
hay forma de evitar este error y que me permita seguir el funcionamiento de mi aplicativo?
Aunque no conozco mucho de esto, me parece que es este error precisamente el que debes manejar para saber si el servidor destino es accesible. Envuelve la llamada a Ping.Ping en un bloque try-except:

Código Delphi [-]
try
  Ping.Ping;
  
  {
    Si el servidor es accesible el flujo continúa aquí
  }
except
  {
    si el servidor no es accesible el flujo continúa aquí ya sin presentarte
    el mensaje. Aquí haces lo que corresponda al caso e incluso puedes
    mostrar tu propio mensaje.
  }
end;

Lo mejor es usar una cláusula on en la parte except para estar seguro de que el flujo cambia a esa parte debido a ese error (podria haber otro tipo de error):

Código Delphi [-]
try
  Ping.Ping;
except
  on ESocketError do
    { Aquí manejas el error }
end;

El nombre correcto de la excepción (ESocketError) no sé cuál es pero basta que pongas el que te marca al momento de lanzarte la excepción.

// Saludos
  #3  
Antiguo 25-03-2005
killaton killaton is offline
Miembro
 
Registrado: mar 2005
Ubicación: Argentina
Posts: 14
Poder: 0
killaton Va por buen camino
Hola Roman....

como siempre gracias por tu respuesta...

ahora..... he probado con try-except y el problema se presenta en que no llega al except y tira el error en el ping.ping
  #4  
Antiguo 25-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, pues entonces lo más recomendable es estudiar el ejemplo que viene con las Indy . En la carpeta IndyDemos viene la demo PingGUI que usa un IdIcmpClient. Lo acabo de probar y trabaja bien tanto con direcciones que sí responden como con las que no.

// Saludos
  #5  
Antiguo 25-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por cierto killaton, éste es ya el tercer mensaje que colocas en el foro DelphiPack que no es el adecuado.

Muevo este al foro Internet.

// Saludos
  #6  
Antiguo 25-03-2005
killaton killaton is offline
Miembro
 
Registrado: mar 2005
Ubicación: Argentina
Posts: 14
Poder: 0
killaton Va por buen camino
Hola Roman...

nuevamente gracias por tu respuesta. Tengo un unico problema . No se porque, no tengo los Demos de indy. Pero ya lo estare banjando.

Respecto a la publicacion de los mensajes. Juro pensar que los temas relacionados a Delphi, debian ser publicados en Delphi Pack 2. Te pido mil disculpas Roman pero no fue con mala intencion.
Solamente un mensaje de SQL por error lo publique en Delphi Pack, por colgado que soy , nada mas....

Ahora quisiera saber en que foro publicar los hilos correspondiente a Delphi, para no seguir comentiendo errores.

Te doy las gracias por avisarme, y nuevamente mil disculpas, pues estaba convencido de estar haciendo las cosas bien....

Última edición por killaton fecha: 25-03-2005 a las 15:50:04.
  #7  
Antiguo 25-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por killaton
Tengo un unico problema . No se porque, no tengo los Demos de indy.
Creo que lasIndy que vienen con Delphi no incluyen los demos pero te puedes bajar los demos y las versiones más recientes de las componentes la página del projecto Indy. Yo uso la versión 9


Cita:
Empezado por killaton
Ahora quisiera saber en que foro publicar los hilos correspondiente a Delphi, para no seguir comentiendo errores.

Te doy las gracias por avisarme, y nuevamente mil disculpas, pues estaba convencido de estar haciendo las cosas bien....
No te preocupes.

La mayoría de los foros del Club están dedicados a Delphi así que tienes que escoger el más apropiado para el tema de la pregunta. Lee la descripción que aparece en el listado de los foros. Los temas que no correspondan a ningún foro en particular colócalos en el de Varios.

// Saludos
  #8  
Antiguo 25-03-2005
killaton killaton is offline
Miembro
 
Registrado: mar 2005
Ubicación: Argentina
Posts: 14
Poder: 0
killaton Va por buen camino
Hola Roman...

Gracias por la aclaracion y tu buena predisposicion.

Espero no volver a cometer errores, ni causar molestias.

He bajado los ejemplos de INDY. y como tu lo has dicho el demo PINGUI. funciona perfectamente. Salvo, que desearia evitar el ESOCKET ERROR # 11004, y cambiar lo por uno de usuario (osea un mensaje mio) para que no cancele el procedimiento y seguir como yo desee.

Tienes idea como hacerlo.?

Gracias nuevamente
  #9  
Antiguo 26-03-2005
killaton killaton is offline
Miembro
 
Registrado: mar 2005
Ubicación: Argentina
Posts: 14
Poder: 0
killaton Va por buen camino
Para todos los que se pasen las horas buscando resolver el problema citado ?

no olvidar incluir en...

uses
idException

de esta forma... utilizando try... except el errorSocket saldra por el except

por ejemplo

try
ICMP.Ping;
except
showmessage('no se pudo realizar el ping');
// continuo con mi aplicacion.
end;

salu2....
Tema Cerrado



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:00:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi