 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Perico Invitado
|
Publicado: Jue 28 Oct, 2004 12:52 pm Asunto: Aqui esta el codigo para hacer un Tracer a una IP, pero... |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 29 Oct, 2004 4:39 am Asunto: |
|
|
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 |
|
 |
Perico Invitado
|
Publicado: Vie 29 Oct, 2004 10:10 am Asunto: Gracias |
|
|
| Muchas gracias _Leo, voy a ver el ejemplo. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|