FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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
|
||||
|
||||
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 |
#3
|
|||
|
|||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
|||
|
|||
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. |
|
|
|