Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Server TCP con Indy desde una PC en Red. (https://www.clubdelphi.com/foros/showthread.php?t=73364)

FENIXadr 16-04-2011 21:09:10

Server TCP con Indy desde una PC en Red.
 
Hola gente.. estoy trabajando con las Indy 9 haciendo un Cliente/Servidor TCP.. Viendo los ejemplos que trae, está prácticamente regalado y anda muy bien.. pero tengo un problema...

ha ver.. Tengo 2 PC's una conectada a internet con un modem usb y la otra conectada via wireless con IP 192.168.0.3 y puerta de enlace 192.168.0.1..

Cuando inicio el server en la máquina conectada a internet, me muestra una lista de las IP de las placas de red, incluida la IP de la conexion PPP y puedo hacer que el Server sea visto via internet, pero cuando inicio el server desde la PC que esta en red, en la lista solo aparecen las placas de red y no aparece la IP de internet. Modifique el ejemplo y le puse la IP de internet directamente pero da error #10049 (Cannot assign requested address), esto es en la PC en red, si hago lo mismo en la PC conectada a internet, obviamente no da error.. De más está decir que la PC en red tiene internet por medio de la puerta de enlace.

Como puedo hacer para ver el Servidor desde internet cuando lo inicio en la PC que está en red??

desde ya muchas gracias..

sintecsl 02-07-2011 11:48:22

No tengo muy claro lo que quieres pero entiendo que quires conectar máquinas entre si mediante internet.

Facil. Solo necesitas configurar los NAT (En el router) y crear una redirección a tu máquina (PC). El problema de esto siempre es el mismo pero facilmente solucionable. ¿ Cual es tu IP externa en internet ? Si lo rebotas en una página con petición de tú IP te dará dentro de su texto la IP que buscas. La debes guardar (Para el que actua como servidor) en algún lugar público, bien una ftp de tuya o pública (encriptala). Y de esa forma es como si tubieses una IP pública fija. Esto solo es el comienzo.....A partir de aquí debes asignar puertos y redireccionar a los PC que se conectarán como Clientes.

Ya se que soy muy escueto, eso depende de tú nivel de conocimientos, pero si sabes un poco te resultará la mar de fácil.....

Ejemplo que te retorna tú IP pública (el 1º es de mi web y no contiene texto sobrante y el otro es una que funciona hasta donde sé correctamente) :

Código Delphi [-]

function IP_Publica : string;
var
  IdHTTP:TIdHTTP;
begin
  Result:=''; //Inicializamos
  if Deteccion_Conexion then
  begin
       IdHTTP:=TIdHTTP.Create(nil);
       try
         Result:=IdHTTP.Get('http://sintecsl.es/IP/IP.php'); //Mi WEB
       finally
         IdHTTP.Free;
       end;
  end;
end;

(*  ANTERIOR FORMA QUE FUNCIONA PERFECTAMENTE
function IP_Publica : string;
  function IsNumeric( T:string ):boolean;
  begin
    Result:=false;
    if (length(T)>0) then
      case T[1] of
          '0'..'9':Result:=true;
      end;
  end;
var
  HTMLBody:string;
  i:integer;
  IdHTTP:TIdHTTP;
begin
  Result:='';
  if   Deteccion_Conexion
  then begin
       IdHTTP:=TIdHTTP.Create(nil);
       try
         HTMLBody:=IdHTTP.Get('http://checkip.dyndns.org/');
         for i:=0 to Length(HTMLBody)-1 do begin
             if   IsNumeric(HTMLBody[i])
             or  (HTMLBody[i]='.')
             then Result:=Result+HTMLBody[i];
         end;
       finally
         IdHTTP.Free;
       end;
  end;
end; *)

Espero que te sea de ayuda.

Enan0 02-07-2011 14:34:49

Como te Dijo Sintecsl tenes que configurar NAT. (network address translation) perdon si lo escribi mal en ingles :D

Otra opcion dependiendo del Modem o Router que tengas es utilizar la Opcion de PORT Forwarding, Que lo que hace es:

Lo que entra por un puerto determinado lo Envia a una Determinada maquina al mismo puerto o a uno distinto. eso como vos quieras.

y no te olvides si usas la opcion de NAT de tener los firewalls debidamente configurados.

saludos

FENIXadr 02-07-2011 14:57:34

hola sintecsl y Enan0.. si si.. entiendo lo que me dicen.. lo de la configuración del router es lo que probé hace un tiempo en una PC de una amiga y funciona correctamente la cosa es que en mi PC no tengo router... tengo un modem ADSL usb con una conexion PPP con lo cual no tengo puertos para redireccionar ni nada por el estilo..
O sea.. tengo un MODEM USB y una placa WIRELESS en mi PC, lo que hago es simplemente redireccionar internet a la placa wireless y de esa manera tengo las funciones de un router wireless pero sin las posibilidades de configurar puertos.. y justamente ese termina siendo el probelma mayor jeje..

Muchas gracias por responder.. hasta otro momento..

sintecsl 03-07-2011 09:14:21

Lo de los puertos
 
Perdona, pero no entiendo eso de que no tienes puertos ¿?.

Como se va ha enterar windows entonces? Estas seguro?

Lo del protocolo ppp es solo eso y lo tienen todos los routers ppoe etc solo son protocolos para comunicarse con quien te da los servicios. Tú en la capa que te moveras entiendo son TCP/IP. Mirate la configuraciónpara ver que tienes (normalmente la IP : 192.168.1.1 por en el navegador http://192.168.1.1/ con esta dirección te tiene que aparecer el router); si no se me escapa la tipología de tú conexión.

FENIXadr 03-07-2011 16:53:48

hola sintecsl.. hubo una confusión .. yo no dije que no tengo puertos.. dije que no tengo puertos para redireccionar o sea no tengo forma de redireccionarlos yo, se redireccionan automáticamente, no tengo manera de configurarlos porque justamente no tengo un router con la opciones que tienen lo routers.. solo es un modem que no tiene acceso por 192.168.1.1 ni por otra IP como los routers.. porque justamente no es un router es solo un modem..jeje. y eso de conexion PPP lo comenté porque justamente es el protocolo por el cual se comunican los modems par despues utilizar los demás protocolos (comopor ejemplo IP) vos seguramente no tenes una conexion PPP tenes una puerta de enlace a tu router y la conexion PPP ya la hizo él... me explico??.. de todos modos gracias por el comentario.. seguramente a alguien le va a servir...

nos vemos.. hasta otro momento.


La franja horaria es GMT +2. Ahora son las 22:09:59.

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