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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2017
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Redirigir los puertos del router con UPnP. ¿Realmente es posible?

Bueno, hace unos años estuve investigando y peleándome un poco con la posibilidad de abrir los puertos del router (UPnP) desde Delphi, lo cual aseguran que es posible, pero a mí nunca me llegó a funcionar. Nuestra aplicación utiliza una BD Cliente/Servidor que requiere abrir un puerto específico del router, y en la empresa estamos un poco hartos de tener que hacerlo nosotros porque el cliente no sabe ni lo que es un router, ni un puerto... ni abrir.

Internet está lleno de ejemplos de código, e incluso programas ya compilados (en Delphi, Java, C, etc.) pero lo cierto es que ninguno de ellos funciona con mi router.

Primero voy con el código. A continuación pongo el código fuente para mostrar los puertos abiertos del router. Por supuesto, el router tiene que ser compatible con UPnP y tener esa característica activada.

Código Delphi [-]
procedure ListUPnPEntries;
var
  Nat : Variant;
  Ports : Variant;
  Port : OleVariant;
  IntPort, ExtPort : Integer;
  Desc, Protocol, IntClient, ExtIP, InternalPort : WideString;
  Enabled: Boolean;
  foreach: IEnumVariant;
  enum: IUnknown;
  i:integer;
begin
  try
    Nat := CreateOleObject('HNetCfg.NATUPnP');
    Ports := Nat.StaticPortMappingCollection;
*
    Enum := Ports._NewEnum;
    foreach := enum as IEnumVariant;
*
    while foreach.Next(1, Port, PDWORD(0)^) = 0 do
    begin
      Desc := Port.Description;
      Enabled := Port.Enabled;
      ExtIP := Port.ExternalIPAddress;
      ExtPort := Port.ExternalPort;
      IntClient := Port.InternalClient;
      InternalPort := Port.InternalPort;
      Protocol := Port.Protocol;
*
      form1.memo1.lines.append(ExtPort+' '+desc+' '+protocol+' '+ExtIP);
    end;
  except
    on e:Exception do
        ShowMessage(e.Message);
  end;
end;

Bien. El código anterior "funciona". El problema es que los puertos que devuelve no tienen NADA que ver con los que tengo abiertos en el router, así que no sé de donde los saca

Este otro código permite abrir un puerto, indicando a qué IP Local redirigir las comunicaciones:

Código Delphi [-]
procedure AddPort;
var
  Nat : Variant;
  Ports : Variant;
  Port : OleVariant;
  i:integer;
begin
  try
    Nat := CreateOleObject('HNetCfg.NATUPnP');
    Ports := Nat.StaticPortMappingCollection;
*
    Ports.Add ( 12345, 'TCP', 12345, '192.168.1.15', True, 'test')
*
  except
    on e:Exception do
        ShowMessage(e.Message);
  end;
end;

Pero ni caso.

Me he leído creo que las 10 primeras páginas de resultados de Google para "Delphi upnp port forwarding" y similares. El código es correcto y , según dicen, funciona.
Así que... ¿alguien lo ha conseguido alguna vez? ¿Es cosa de mi router? He probado a desactivar el Firewall propio del router, pero tampoco.

He encontrado también ejemplos que permiten comunicarse con dispositivos UPnP desde Delphi (no necesariamente routers, también altavoces bluetooth, etc.) y supuestamente, una vez conectados, podemos hacer (casi) lo que queramos con ellos, pero no hay mucha información al respecto.

Me parece raro que los puertos que me devuelve la función anterior no tengan nada que ver con los abiertos en el router. ¿De donde los saca? ¿Estaré haciendo la petición a OTRO dispositivo uPnP y no al router?!!?

Pues eso, cualquier información será bienvenida.
Responder Con Cita
 



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
Redirigir puertos por UPnP Gimli Internet 0 09-01-2012 18:40:12
Redirigir al JAR david.rguez JAVA 1 02-09-2008 15:52:46
usar upnp con Delphi para configurar nat en un router? maro Internet 8 25-03-2008 16:19:55
Bloquear puertos en el Firewall del Router martinc5 Redes 14 18-10-2007 22:54:49
es posible conectarse a router por delphi? XxEdwinxX Redes 4 07-08-2006 15:44:38


La franja horaria es GMT +2. Ahora son las 00:56:00.


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