Android端口转发

时间:2014-03-14 08:44:08

标签: java android sockets router

如何使用其他设备的IP从Android设备转发到路由器?

我想从Android设备外部连接到路由器公共IP:端口,以便我可以访问连接到路由器的硬件设备。(Android - >外部IP:端口) - >路由器 - >硬件设备(硬件设备有自己的IP和mac)。

enter image description here

代码:

    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());
    }
}

上面的代码没有崩溃,但它也没有创建任何端口!

这可能吗? 如果答案是肯定的,你能否指出我正确的方向。

2 个答案:

答案 0 :(得分:4)

找到这个问题的答案。 第一步是在路由器上启用 UPNP 选项,在此步骤之后导入库net.sbbi.upnp搜索路由器(IGD)设备并使用方法 addPortMapping

以下是任何想要使用任何IP在路由器上打开o端口的人的示例,而不仅仅是应用程序运行的当前设备。

https://github.com/ManolescuSebastian/Port_Forward_Android

答案 1 :(得分:0)

您必须通过桌面与任何资源管理器(iexplorer,chrome等)连接到您的路由器,尝试连接到地址192.168.1.1(您的gateway,执行{{1}在ipconfig窗口中,您将看到一行显示您的cmd [路由器]),输入路由器的用户名和密码并进行配置。取决于路由器和型号,请参阅路由器手册。查找标有gatewayNATPort Forward的内容。您可以打开单个端口或一系列端口,键入应转发这些端口的IP地址,在这种情况下是设备的IP。如有任何疑问,请在互联网上搜索路由器的名称以及如何打开/转发端口。

祝你好运。