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 29-09-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
saber el ip de internet

Hola amigos, partiendo del ejemplo de Delphi usando Tclientsockets, TNMMSGServ1 y TNMMsg1, estoy haciendo un programa para el envio de mensajes en una red, el tema es que en una red local no tengo problemas pues obtengo el ip o host de cada maquina con estos componentes, pero en el momento de querer usarlo en internet, no encuentro funcion o componente que me devuelva el IP de la conexion a Internet, tengo una máquina con un IP fijo que seria el "servidor" quisiera obtener el IP de los distintos clientes que se conecten al "servidor" via internet, uso Delphi 5, desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 29-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

A mi me gusta utilizar los servicios de paginas como http://checkip.dyndns.org/ (puedes encontrar otras).

Estas páginas devuelven la IP con la que estas conectado. Solo tienes que hacer que tu programa haga una solicitud HTTP a esta página, y buscar en el resultado, una cadena del tipo x.x.x.x que será la dirección IP.

NOTA : Como este servicio lo proporciona otra empresa, puede ser que deje de funcionar sin previo aviso. Por eso es mejor que la URL a utilizar sea configurable. Así si se da de baja esta página puedes pasar a utlizar otra como http://www.whatsmyipaddress.com

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 29-09-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
Bien, es una opcion válida, pero ya que tengo una IP fija en mi máquina, puedo enviar desde cualquier punto un mensaje a mi máquina, el tema es si con algun componente de la paleta fast net puedo obtener el IP de quien me envia un mensaje?
Responder Con Cita
  #4  
Antiguo 29-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

No creo que ningún componente de las FastNet te dé esta información. Es complicado, aunque todos los paquetes IP llevan la información de la dirección IP que los ha enviado (mira la estructura de la cabecera de un paquete IP : http://www.freesoft.org/CIE/Course/Section3/7.htm). Te encontrarías problemas con los clientes que usen routers (muchos de los que tienen ADSL), puesto que lo que necesitas es la dirección IP del router y no el de la maquina.

Por eso prefiero que el cliente averigue su dirección IP externa mediante una página http, y cuando tengo la dirección se la envío al servidor que tiene IP fija.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 29-09-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira a ver si con este ejemplo te puede servir:
Código:
uses Winsock;



function getIPs: TStrings;

type

  TaPInAddr = Array[0..10] of PInAddr;

  PaPInAddr = ^TaPInAddr;

 

var

  phe: PHostEnt;

  pptr: PaPInAddr;

  Buffer: Array[0..63] of Char;

  I: Integer; GInitData: TWSAData;

 

begin

  WSAStartup($101, GInitData);

  Result:=TStringList.Create;

  Result.Clear;

  GetHostName(Buffer, SizeOf(Buffer));

  phe := GetHostByName(buffer);

  if phe = nil then

  begin

    Exit;

  end;

  pPtr := PaPInAddr(phe^.h_addr_list);

  I := 0;

  while pPtr^[i] <> nil do

  begin

    Result.Add(inet_ntoa(pptr^[i]^));

    Inc(I);

  end;

  WSACleanup;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin
 ShowWindow(Application.Handle, SW_HIDE);
  memo1.Lines :=GetIps;

end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 30-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por guillotmarc
Te encontrarías problemas con los clientes que usen routers (muchos de los que tienen ADSL), puesto que lo que necesitas es la dirección IP del router y no el de la maquina.
pero en ese caso llegarían al servidor con la dirección IP del router del cliente (la dirección externa/Internet del router, no la dirección IP del router dentro de la red local, ni la de la máquina que originó el paquete).

Saludos
Responder Con Cita
  #7  
Antiguo 30-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

¿ Estas seguro ?. En el caso de que utilizes un Proxy, IP masquerading u otro sistema por el estilo, en el que delegas en otra maquina para que haga la conexión por ti y te devuelva el resultado, efectivamente el origen del paquete sería la dirección externa.

Pero simplemente con un router, el origen del paquete deberá mantenerse como la dirección IP de la LAN local. Puesto que ese router, al igual que el resto de routers por los que va a pasar el paquete, no modifica su contenido, simplemente lo dirije al segmento adecuado a los que está conectado el router.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 30-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por guillotmarc
¿ Estas seguro ?.
pues seguro, seguro, no lo estoy, pero en el caso que se estaba comentando (los modem/router ADSL) el router actúa como una pasarela (imagino que salvo los casos en que esté en modos monopuesto) entre la red local e Internet, donde no son enrutables las direcciones IP de la red local.

Saludos.
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


La franja horaria es GMT +2. Ahora son las 14:35:29.


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