Reenvío de puertos Android
¿Cómo puedo realizar un reenvío de puertos desde un dispositivo Android a un enrutador utilizando la IP desde otro dispositivo?
Quiero conectar desde el dispositivo android externamente a un routers ip público: puerto para que pueda acceder al dispositivo de hardware que está conectado al enrutador. (Android -> IP externa: Puerto) -> Router -> hardware Dispositivo Su propio IP y mac).
- HTTP Vs sockets Vanilla para cargar archivos binarios grandes (50-200 MB) desde un dispositivo Android a través de una red Wi-Fi de un solo salto
- Conexión larga de sondeo TCP de Android
- 'Permiso denegado' al conectarse al socket unix abstracto
- Servicio de Android para sockets TCP
- ObjectInputStream - ¿Cómo esperar a nuevos datos?
Código:
PortMapping mapping = new PortMapping(); UnsignedIntegerTwoBytes externalPort = new UnsignedIntegerTwoBytes(22555L); UnsignedIntegerTwoBytes internalPort = new UnsignedIntegerTwoBytes(80L); mapping.setDescription("HardwareDescription"); mapping.setEnabled(true); mapping.setExternalPort(externalPort); mapping.setInternalClient("192.168.2.68"); mapping.setInternalPort(internalPort); mapping.setProtocol(PortMapping.Protocol.TCP); mapping.setRemoteHost("192.168.2.254"); mUpnpService = new MyUpnpServiceImpl(new PortMappingListener(mapping)); mUpnpService.getRouter(); mUpnpService.getControlPoint().search(SCAN_TIMEOUT);
UpnpServiceImpl:
private class MyUpnpServiceImpl extends UpnpServiceImpl { public MyUpnpServiceImpl(RegistryListener... listeners) { super(new AndroidUpnpServiceConfiguration(getWifiManager()), listeners); } @Override public Router getRouter() { return super.getRouter(); } @Override protected Router createRouter(ProtocolFactory protocolFactory, Registry registry) { return new AndroidWifiSwitchableRouter(configuration, protocolFactory, getWifiManager(), getConnectivityManager()); } }
El código anterior no se bloquea, pero también no crea ningún puerto!
es posible? Si la respuesta es sí, puede usted señalarme en la dirección correcta.
- Cómo resolver java.net.BindException: error de enlace: EADDRINUSE (Dirección ya en uso)
- Conexión de dos teléfonos Android para transferir datos entre ellos a través de WIFI
- Comunicación de socket cliente / servidor de Android mediante Service o IntentService
- Android VpnService proteger socket que se almacena en código nativo?
- ¿Hay algún mecanismo de devolución de llamada en android cuando hay datos disponibles para leer en socket
- El arranque del emulador atascó la estructura x86 en AOSP 4.3 con el emulador: Error al conectar con el zócalo '127.0.0.1:1970'
- Socket de transferencia de una actividad a otra
- Acceso a WebView desde otra función en la clase MainActivity
Encontró la respuesta para esta pregunta. El primer paso es habilitar la opción UPNP en el enrutador, después de este paso importar la biblioteca net.sbbi.upnp buscar el dispositivo enrutador (IGD) y usar el método addPortMapping .
Este es un ejemplo para cualquier persona que quiera abrir el puerto en el router usando cualquier IP, no sólo desde el dispositivo actual que ejecuta la aplicación.
Tienes que conectar a tu router a través de un escritorio con cualquier explorador (iexplorer, cromo, etc) intenta conectar a la dirección 192.168.1.1
(la que es tu gateway
, ejecuta ipconfig
desde una ventana de cmd
y verás una línea que Dice cuál es su gateway
[el enrutador]), escriba el usuario del router y contraseña y configurarlo. Depende del enrutador y del modelo, consulte el manual del enrutador. Busque algo que diga NAT
, Port Forward
o Virtual Server
. Puede abrir un solo puerto o un rango de puertos, escriba la dirección IP en la que se deben reenviar esos puertos, en este caso la IP de su equipo. En caso de duda, busque en Internet el nombre de su enrutador y cómo abrir / reenviar puertos.
Buena suerte.
- Android: ¿Cómo incluir un menú xml dentro de otro menú xml?
- Generando la firma con SHA256withRSA en lugar de SHA1withRSA