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 

Error Ping en Compilacion

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Error Ping en Compilacion Responder citando

Este codigo me dá error cuando compilo, diciendome que el programa ha dejado de funcionar. Ejecuto la compilacion sobre Windows 7 64bits y builder 2010, pero en ejecución el programa funciona perfectamente.
Código:

#pragma hdrstop
#include <memory>
#include <ScktComp>
#include <winsock2>
#include <iphlpapi>
#include <icmpapi>
#include "Ping.h"
bool Ping(void)
{
   //Declarar e inicializar variables
   char IP[] = "216.239.59.104";
   bool Result = true;
   HANDLE hIcmpFile;
   unsigned long ipaddr = INADDR_NONE;
   DWORD dwRetVal = 0;
   char SendData[] = "Data Buffer";
   LPVOID ReplyBuffer = NULL;
   DWORD ReplySize = 0;

   //Obtener IP
   ipaddr = inet_addr(IP);
   if(ipaddr == INADDR_NONE)
      return false;

   hIcmpFile = IcmpCreateFile();
   if(hIcmpFile == INVALID_HANDLE_VALUE)
      return false;

   ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
   ReplyBuffer = (VOID*) malloc(ReplySize);
   if(ReplyBuffer == NULL)
      return false; // No localizacion de memoria...

   // Envia Ping
   dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),NULL, ReplyBuffer, ReplySize, 1000);

   if(dwRetVal != 0)
   {
      PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
      // Detectar Error en Ping (IP_STATUS)
      // ICMP_ECHO_REPLY Structure IP_STATUS code
      // http://msdn2.microsoft.com/en-us/library/aa366053(VS.85).aspx
      if(pEchoReply->Status != 0)
         Result = false; // Error en Ping el Host no lo recibe....
   }
   else
      Result = false;

   free(ReplyBuffer);

   if(!Result)
   {
      if(IPInternet() == "Venta Equipos tactiles") //Compruebo que está escrito en la pagina Web de visual-systems.es
         Result = true;
      else
         Result = false;

    }
   return Result;
}
//---------------------------------------------------------------------------
String IPInternet(void)
{
   std::auto_ptr<TClientSocket> socket(new TClientSocket(0));
   socket->Host = "www.visual-systems.es";
   socket->ClientType = ctBlocking;
   socket->Port = 80;
   try
   {
      socket->Open();
      char buffer[1024] = "GET http://www.visual-systems.es HTTP/1.0\n\n";
      socket->Socket->SendText(buffer);
      socket->Socket->ReceiveBuf(buffer, sizeof(buffer));
      String html = buffer;
      html = html.SubString(html.Pos("<title>"),29);   //Capturo 29 caracteres incluido la etiqueta
      return html.Delete(1, 7); // 7 caracteres que son: "<title>" del codigo fuente de mi pagina Web. Y RETORNO "Venta Equipos tactiles"
   }
   catch (...)
   {
      return "";
   }

}
//---------------------------------------------------------------------------


Esta es la linea en la que el programa se bloquea cuando compilo:
Código:

dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),NULL, ReplyBuffer, ReplySize, 1000);


Alguien sabe donde está el error, antes con el builder 2007 no me daba este error.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Que error te da ? a mi me compila y ejecuta correctamente (misma versión de Windows y de C++Builder).
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perdona _Leo, aveces el Builder se me queda colgado en la Linea mencionada y a veces NO. No me dá ningún error de Compilación sino que el Builder se cuelga y me sale el tipico mensaje de Windows 7 "Este programa a dejado de funcionar" que quiere hacer "Cerrar o Depurar".
Yo le digo que cerrar y enseguida se termina la compilación y me devuelde al IDE del Builder sin mas.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

He probado a compilarlo varias veces, abriéndolo y cerrándolo, etc.. y ninguna de las veces me ha fallado. Asegúrate de tener todas las actualizaciones instaladas por si acaso..
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

gracias por tus pruebas Leo, he descuvierto que el error me daba después de que me saltase una excepción de momoria en otro bloque del código. Gracias.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
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.