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 

Detectar que alquien ha desconectado el cable de red

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Detectar que alquien ha desconectado el cable de red Responder citando

hola a tod@s

me gustaria saber como detectar que el cable de red de un equipo.
Hay alguna funcion del Buiilder o alguna API que detecte la desconecion al mismo tiempo que sale el cartelito de que no hay conexion en windows?

Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Generalmente, esto lo realiza windows, y se denomina Media Sense, es una propiedad a partir del windows 2000, en el siguiente enlace pongo algo para detectar la conexion y desconexion de dispositivos,

https://cppbuilder.es/viewtopic.php?t=9872&highlight=cable+red

ya que la forma de detectar, dicha informacion, depende del valor de un mensaje al estilo WM_ pero que por el momento se encuentra protegido. por windows.

espero que te sirva, en dado caso, puedes optar por buscar la informacion dentro de MicroSoft, pero aun yo mismo lo hecho sin tener respuesta de MicroSoft

saludos estamos en contacto...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias Cesar,

he probado el código y compila bién y todo, lo que ocurre es que al quitar el desconectar el cable de red de la tarjeta de red no pasa nada. El codigo funciona cuando se deshabilita la tarjeta de red no al quitar el cable, que como bien dices son cosas de Media Sense.

Actualmente para saber si tengo conexion con la red en un timer hago ping a mi maquina periodicamente y compruebo que la IP sea válida, por ejmplo que no sea 127.0.0.0

Muchas gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Igual esto os ayuda, aunque no sé si es muy de fiar.

Código:

void __fastcall ExisteUnidad(AnsiString Unidad)
{
char *lpMsgBuf;
char Buffer[3000];
unsigned long Longitud;    // pointer to buffer size, in characters

Longitud = sizeof(Buffer);
if(WNetGetConnection(Unidad.c_str(),Buffer,&Longitud) != NO_ERROR)
  {
  FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL);
        // Display the string.
        MessageBox( NULL, lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );

        // Free the buffer.
        LocalFree( lpMsgBuf );
  }
else ShowMessage(Buffer);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

hola, muchas gracias pero creo que este codigo no me sirve ya que es para detectar unidades de almacenamiento (tambien en red) pero no es lo que busco

Muchas gracias de todas formas
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: conectado a internet o red Responder citando

HINSTANCE dllInstance = LoadLibrary("url.dll");
bool (__stdcall *InetIsOffline)(int);
InetIsOffline = (bool(__stdcall*)(int))GetProcAddress(dllInstance, "InetIsOffline");
if (InetIsOffline(0))
Application->MessageBox("No esta Conectado a Internet","AVISO",MB_ICONINFORMATION);
else
ShowMessage("Conectado a internet");
FreeLibrary(dllInstance);
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: conoce ip -te servira- Responder citando

#include <winsock2.h>

//Label1 & Label2


WORD wVersionRequested;
WSADATA wsaData;
char name[255];
AnsiString ip;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );

if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{

if( gethostname ( name, sizeof(name)) == 0)
{
Label1->Caption = name;
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(in_addr *)*hostinfo->h_addr_list);
Label2->Caption = ip;
}
}
WSACleanup( );
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Buenas,

Solo indicar q en algunas transmisiones se usan algoritmos propios de
comunicación, q permiten a parte de mantener la red activa, tambien
sirven para indicar si el servidor esta vivo o no.

Por Ejem. Enviar cada cierto numero de segundos una trama Tcp al servidor, q este debe responder, y si no lo hace en el tiempo previsto sabremos que la conexión se perdió.

Se pueden aplicar cualquier otro mecanismo de control.
_________________
Saludos
~~~~~~~~
Wink _Willa
~~~~~~~~
www.avancegame.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado 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.