Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Como saber si tengo conexión?

Hola,

Mi pregunta es la siguiente, estoy trabajando con un servidor tcp y me gustaria saber cuando se queda sin conexión, pero me refiero a sin red, ya sea intranet como internet. Para internet se puede comprobar haciendo pings. pero para saber si tengo red interna como podria hacerlo (representa que no se la dicecion del gateway(puede variar -> DHCP).

Muchas gracias!

Saludos
Responder Con Cita
  #2  
Antiguo 16-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Es una pregunta interesante

Podemos intentar resolver el problema de varias maneras. Lo primero, para comprobar si tenemos conexión a internet lo mejor es, como tu ya has dicho, hacer ping hacia una dirección fuera de nuestra red. Por esa parte creo que el tema esta resuelto. En cuanto a la red interna, se me ocurre que podrías hacer un ping a la puerta de enlace (gateway). No saber de antemano la dirección de la puerta de enlace no supone un problema, siempre podemos averiguarla.

Por otro lado, si estas usando DHCP y WindowsXP podemos utilizar un pequeño truco para saber si alguien ha desconectado el cable de red. Cuando windows detecta que el cable esta desconectado, cambia la ip que le ha sido asignada por otra diferente, una por defecto (ahora mismo no recuerdo cual es). Solo tendríamos que comprobar que dirección ip tenemos y si se ajusta a al rango de direcciones ip que solemos usar, si no esta dentro de ese rango es que el cable esta desconectado. (Este truco lo usaba yo contra unos "listos" que desconectaban el cable de red para hacer cosas "malas" sin que los viera)

Si alguna de esas soluciones te gusta, podemos meternos mas a fondo con el código.
Responder Con Cita
  #3  
Antiguo 19-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Jejejeje

Muy interesantes las posibles soluciones, pero creo que la mejor es la útima, ya es la más completa, según mi opinion.
Si me hechas una manita con el codigo

Muchisimas gracias!
Responder Con Cita
  #4  
Antiguo 19-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Gagiel
Muy interesantes las posibles soluciones, pero creo que la mejor es la útima, ya es la más completa, según mi opinion.
Si me hechas una manita con el codigo
Si te refieres a comprobar la ip, es muy sencillo. Con una función como esta:
Código Delphi [-]
Uses Winsock;

function GetIp: string;
var
  Buffer: array[0..127] of char;
  WSAData: TWSADATA;
  HostEnt: phostent;
begin
  Result:= '';
  FillChar(Buffer,Sizeof(Buffer),#0);
  if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
  begin
    if GetHostName(@Buffer,Sizeof(Buffer)) = 0 then
    begin
      HostEnt:= gethostbyname(@Buffer);
      if HostEnt <> nil then
        Result:= String(inet_ntoa(PInAddr(HostEnt.h_addr_list^)^));      
    end;
    WSACleanup;
  end;
end;

Obtenemos la ip del equipo, si el cable de red esta desconectado nos dará un valor del tipo "127.0.0.1" y si esta conectado pero el DHCP no funciona dará un valor por defecto (sigo sin encontrar el valor). En cualquier caso, lo normal es que en nuestra red utilicemos direcciones del tipo 192.168.x.x o 10.x.x.x así que solo tenemos que comprobar que la ip que obtenemos se encuentra dentro del rango para saber si todo funciona bien. De todas formas tendras que realizar los ajustes necesarios para tu red.

Última edición por seoane fecha: 20-03-2007 a las 13:08:22.
Responder Con Cita
  #5  
Antiguo 20-03-2007
Gagiel Gagiel is offline
Miembro
 
Registrado: ene 2007
Posts: 27
Poder: 0
Gagiel Va por buen camino
Muchas gracias por el codigo!

Es una gran idea y muy simple y sencilla, no se me habia ocurrido!
Lo he estado probando y los resulatdos són:

Si tiene conexión da la ip que toque.
Si no tiene cable de red o tiene la wlan desactivada: 127.0.0.1
Si el DHCP falla, sea por codigos wep o porque el router no tiene DHCP la ip que se queda es la siguiente: 169.254.120.40

Muchas gracias por la respuesta!

Saludos!
Responder Con Cita
  #6  
Antiguo 29-12-2007
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Hacer ping

Me parece un tema muy interesante, el que habéis tratado. Estoy interesado también en saber hacer un ping, a una dirección externa de internet, por código. Por lo que leo en este hilo, lo teneis claro y me gustaría que me echaseis una mano si podeis.

Gracias

Última edición por escafandra fecha: 29-12-2007 a las 20:13:17.
Responder Con Cita
  #7  
Antiguo 29-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

escafandra, por favor, no repitas la misma cuestión en hilos diferentes, puesto que lleva a la confusión. Creo que deberían responderte aquí, donde inicialmente hiciste la pregunta. Revisa la guía de estilo de los foros para más información.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
saber cuantos datos iguales tengo en paradox coyule Tablas planas 2 09-02-2007 09:38:44
saber cuando se pierde la conexion en un IdTCPClient Spynosa Internet 4 25-07-2006 14:56:31
como saber que S.O tengo en mi Maq. caio Varios 1 24-08-2004 15:27:42
Saber si hay conexion JCR Internet 0 26-04-2004 21:07:06
Tengo un problema con la conexión al servidor subzero Firebird e Interbase 3 27-01-2004 18:25:14


La franja horaria es GMT +2. Ahora son las 07:24:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi