![]() |
como hacer un ping....
Hola gente ....:D
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.:confused: 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. |
Cita:
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):
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 |
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 :confused: |
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 |
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 |
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....:D 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.... |
Cita:
Cita:
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 |
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 |
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 :D por ejemplo try ICMP.Ping; except showmessage('no se pudo realizar el ping'); // continuo con mi aplicacion. end; salu2.... |
La franja horaria es GMT +2. Ahora son las 19:10:18. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi