13 de junio de 2003

Obtener Estadisticas de los paquetes ICMP

Este es un ejemplo de como podemos obtener por medio de apis estadistica de los paquetes icmp enviados y recibidos en la maquina.
Public oFrm
oFrm=Newobject("ICMP_Data")
oFrm.Show
Return

Define Class ICMP_Data As Form
 Height = 280
 Width = 500
 Desktop = .T.
 DoCreate = .T.
 AutoCenter = .T.
 BorderStyle = 0
 Caption = "Estadisticas ICMP"
 ControlBox = .T.
 Closable = .T.
 MaxButton = .F.
 MinButton = .F.
 ClipControls = .F.
 AlwaysOnTop = .F.
 BackColor = Rgb(203,230,241)
 Name = "ICMP_Data"

 Add Object lst_datos As ListBox With ;
  ColumnCount = 3, ;
  ColumnWidths = "250,100,100", ;
  Height = 271, ;
  Left = 6, ;
  Sorted = .F., ;
  Top = 2, ;
  Width = 483, ;
  DisabledItemBackColor = Rgb(102,130,200), ;
  DisabledItemForeColor = Rgb(255,255,0), ;
  DisabledForeColor = Rgb(255,0,0), ;
  Name = "lst_datos"
 Add Object timer1 As Timer With ;
  Top = 36, ;
  Left = 408, ;
  Height = 23, ;
  Width = 23, ;
  Interval = 560, ;
  Name = "Timer1"

 Procedure Estadisticas()
  Local ICMP, nCiclo
  ICMP = Space((13*4*2)+1)
  If GetIcmpStatistics(@ICMP) = 0
   With Thisform.lst_datos
    For nCiclo = 1 To 13
     .AddListItem(Alltrim(Str(.Parent.nRepStruct(ICMP,nCiclo))),nCiclo+1,2)
     .AddListItem(Alltrim(Str(.Parent.nRepStruct(ICMP,nCiclo+13))),nCiclo+1,3)
    Endfor
   Endwith
  Else
   Wait Window "Error al Obtener las Estadisticas"
  Endif
 Endproc

 Procedure nRepStruct
  Lparameters cEstructura, nValor
  Local cCadena, nEmp
  nEmp=((nValor-1)*4)+1
  cCadena = Substr(cEstructura,nEmp,4)
  Return  (Asc(Substr(cCadena, 1,1)) +;
   BitLShift(Asc(Substr(cCadena, 2,1)),  8)+;
   BitLShift(Asc(Substr(cCadena, 3,1)), 16)+;
   BitLShift(Asc(Substr(cCadena, 4,1)), 24))
 Endproc

 Procedure Load
  Declare Long GetIcmpStatistics In "iphlpapi" String @cEstructura
 Endproc

 Procedure lst_datos.Init
  With This
   .Clear()
   .AddListItem('Parametros',1,1)
   .AddListItem('Recibidos',1,2)
   .AddListItem('Enviados',1,3)
   .AddListItem('Mensajes',2,1)
   .AddListItem('Errores',3,1)
   .AddListItem('Destino inaccesible',4,1)
   .AddListItem('Tiempo agotado',5,1)
   .AddListItem('Problema de Parametros',6,1)
   .AddListItem('Paquetes de control de flujo',7,1)
   .AddListItem('Redirecciones',8,1)
   .AddListItem('Echos',9,1)
   .AddListItem('Respuestas de Eco',10,1)
   .AddListItem('Fechas',11,1)
   .AddListItem('Respuestas de fecha',12,1)
   .AddListItem('Máscaras de direcciones',13,1)
   .AddListItem('Máscaras de direcciones respondidas',14,1)
  Endwith
  Thisform.Estadisticas()
 Endproc

 Procedure timer1.Timer
  Thisform.Estadisticas()
 Endproc
Enddefine
Saludos

Jorge Mota, Guatemala

No hay comentarios. :

Publicar un comentario