Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ¿Como hacer Ping desde codigo? (https://www.clubdelphi.com/foros/showthread.php?t=51791)

escafandra 29-12-2007 16:31:10

¿Como hacer Ping desde codigo?
 
No encuentro la forma de hacer un ping desde código C++ a una dirección de Internet. El código en delphi también me puede servir aunque prefiero C++.

Si tenéis alguna sugerencia os lo agradecería mucho.

Saludos.

duilioisola 29-12-2007 19:26:09

En Delphi puedes usar las Indi Clients - TIdIcmpClient.

Código Delphi [-]
procedure TForm1.BtnPingClick(Sender: TObject);
begin
   IdIcmpClient1.Host := '192.168.1.1';
   IdIcmpClient1.Ping;
end;

procedure TFMMain.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
{TReplyStatus = record  
   BytesReceived: integer;  
   FromIpAddress: string;  
   MsgType: byte;  
   SequenceId: word;  
   MsRoundTripTime: longword;  
   TimeToLive: byte;  
   ReplyStatusType: 
   TReplyStatusTypes;  
end;

TReplyStatusTypes = (rsEcho, rsError, rsTimeOut, rsErrorUnreachable, rsErrorTTLExceeded);
}

end;

escafandra 29-12-2007 20:05:23

Gracias por tu pronta respuesta. No se porque tengo problemas para instalar Indi en mi viejo C++ Builder 5. Lo instalo pero no me funciona bien.

Si sabeis de otros componentes para hacer un ping o como hacerlo directamente por código.....

dec 29-12-2007 20:36:43

Hola,

Creo que el artículo Implementing PING without using raw sockets, de Zarko Gajic, puede serte de utilidad.

escafandra 29-12-2007 23:45:27

Cita:

Empezado por dec (Mensaje 255076)
Hola,

Creo que el artículo Implementing PING without using raw sockets, de Zarko Gajic, puede serte de utilidad.

Gracias por tu respuesta. Voy a mirar ese artículo.

escafandra 30-12-2007 13:39:43

He mirado el artículo y funciona compilado en delphi, pero no ma funciona con Builder. El problema esta que una vez compilado con Builder C++ y al hacer el linkado, no encuentra las funciones externas que deben estar en icmp.dll y no puede crear el ejecutable.:confused:

escafandra 30-12-2007 18:29:32

He conseguido linkar esas funciones externas de icmp.dll y ejecutar una prueba según lo que se exponía en: http://delphi.about.com/od/interneti.../aa081503a.htm

Pero no funciona bien, si reinicio el Router no debería poder hacer un ping a Google.com (64.233.187.99), por ejemplo. Sin embargo, en el momento que el Router me asigna una IP privada (Lan) puedo hacer ese ping, a pesar de no tener conexión Wan :confused:.

Mi intención es precisamente esa, saber si tengo conexión a internet, no red local. Para eso habia pensado, como solución, hacer un ping a una web estable como google o microsoft...

dec 30-12-2007 18:40:21

Hola,

Echa un vistazo a la Introducción al API WinInet de la Web de JM, particularmente, Funciones de estado de la conexión. Tal vez te resulte útil. ;)

escafandra 02-01-2008 21:12:41

Hola de nuevo.

Tras el fin de año....

He conseguido hacer ping por código. Gracias por las indicaciones. Por si a alguno le sirve, dejo unos links interesantes que me han servido para hacer mi código:
http://msdn2.microsoft.com/en-us/library/aa366050(VS.85).aspx
http://www.sockets.com/
http://www.sockets.com/ms_icmp.c
http://lawebdejm.com/prog/cpp/winine....html#subapdo8

jachguate 02-01-2008 21:39:20

Oye... un poco del código, quizás en forma de truco no nos vendría nada mal. ;)

Hasta luego.

;)

escafandra 03-01-2008 11:38:06

Al parecer hay problemas con el editor de trucos. Cuando funcione con normalidad editare el truco.:D

Saludos.

jachguate 03-01-2008 17:12:17

He reportado el problema en la sección de moderadores, a espera que Emilio lo revise.

Por lo que he podido ver, los problemas reportados tienen que ver con la integración de la página con el resto de los foros, pero supongo que si es posible publicar el truco.

Notificaré cuando el problema haya sido resuelto por el capo.

Hasta luego.

;)

jachguate 03-01-2008 21:28:52

Hola de nuevo.

Emilio se ha ensuciado las manos, pero la sección de trucos está 100% ahora. Gracias por el reporte, y adelante... a escribir el truco!.

Hasta luego.

escafandra 04-01-2008 11:15:14

El truco está publicado con el Nº 456.

Saludos:D


La franja horaria es GMT +2. Ahora son las 11:39:01.

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