Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Aqui esta el codigo para hacer un Tracer a una IP, pero...

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Aqui esta el codigo para hacer un Tracer a una IP, pero... Responder citando

He estado haciendo este minúsculo programa para hacer un tracer,
pero si veis los resultados de los tiempos al hacer un tracer a www.terra.es
Paso 0 - 72 bytes from 213.4.130.210 : icmp_seq=0 ttl=124 time=188 ms
Paso 1 - 0 bytes from 0.0.0.0 : icmp_seq=2 ttl=0 time<10 ms
Paso 2 - 0 bytes from 0.0.0.0 : icmp_seq=3 ttl=0 time<10 ms
Paso 3 - 56 bytes from 213.0.184.251 : icmp_seq=0 ttl=126 time=-962606809 ms
Paso 4 - 56 bytes from 213.0.249.17 : icmp_seq=0 ttl=252 time=-962606668 ms
Paso 5 - 56 bytes from 213.0.251.186 : icmp_seq=0 ttl=252 time=-962606356 ms
Paso 6 - 72 bytes from 213.4.130.210 : icmp_seq=6 ttl=124 time=141 ms
TRAZADA TERMINADA

me dan varios valores negativos como "-962606809 ms". Por que puede ser esto?
Tabién el tema de 0.0.0.0 se supone que esta esperando?

aqui esta el código:
(solo hay que poner un TMemo,un TButton y un TIdIcmpClient.

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <winsock2.h>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

bool ya=false;
String ipi="";
String HostName;
int pasos=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Clear();
IdIcmpClient1->Host=Edit1->Text;
try
{
IdIcmpClient1->Ping(); //ipi
}
catch ( ... )
{
Memo1->Lines->Add("La IP o dominio \"" + Edit1->Text + "\" no existe o no está disponible.");
return;
}
IdIcmpClient1->Host=ipi;
IdIcmpClient1->TTL=0;
ya=false;
for (int a=1; a<128;IdIcmpClient1->TTL++,a++)
{
IdIcmpClient1->Ping();
if (ya==true)
{
a=20000;
}
}
Memo1->Lines->Add("TRAZADA TERMINADA");
ya=false;
ipi="";
pasos=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
AnsiString sTime, result[5];
if (ipi=="")
ipi= result[1] = AReplyStatus.FromIpAddress;
if(AReplyStatus.MsRoundTripTime == 0)
sTime = "<1";
else
sTime = "=";
result[0] = IntToStr(AReplyStatus.BytesReceived);
result[1] = AReplyStatus.FromIpAddress;
result[2] = IntToStr((int)AReplyStatus.SequenceId);
result[3] = IntToStr((int)AReplyStatus.TimeToLive);
result[4] = sTime;
result[5] = IntToStr(AReplyStatus.MsRoundTripTime);
Memo1->Lines->Add("Paso " + IntToStr(pasos) + " - " + result[0] + " bytes from " +
result[1] + " " +
" : icmp_seq=" + result[2] + " ttl=" + result[3] +
" time" + result[4] + result[5] + " ms");
Application->ProcessMessages();
pasos++;
if (result[1] == ipi)
ya=true;
}
//---------------------------------------------------------------------------

Gracias por la ayuda.
Volver arriba
Mensaje    Asunto: Responder citando

Comprueba el valor de "AReplyStatus.ReplyStatusType", ya que te puede estar indicando una de estas situaciones:

enum TReplyStatusTypes { rsEcho, rsError, rsTimeOut, rsErrorUnreachable, rsErrorTTLExceeded };

Puede serte útil un ejemplo que hay en la propia Web de los creadores del paquete de componentes Indy. Dentro del .zip fíjate en un ejemplo llamado "TraceRoute":

http://www.nevrona.com/indy/downloads/CBDemos20010311.zip
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Gracias Responder citando

Muchas gracias _Leo, voy a ver el ejemplo.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.