Java Android端口转发

Java Android端口转发,java,android,sockets,router,Java,Android,Sockets,Router,如何使用其他设备的IP将端口从android设备转发到路由器 我想从android设备外部连接到路由器的公共ip:端口,这样我就可以访问连接到路由器的硬件设备。(android->外部ip:端口)->路由器->硬件设备(硬件设备有自己的ip和mac) 代码: UpnpServiceImpl: private class MyUpnpServiceImpl extends UpnpServiceImpl { public MyUpnpServiceImpl(RegistryListen

如何使用其他设备的IP将端口从android设备转发到路由器

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

代码:

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());
    }
}
上面的代码不会崩溃,但也不会创建任何端口

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

你必须使用任何浏览器(iexplorer、chrome等)通过桌面连接到路由器,尝试连接到地址
192.168.1.1
(你的
网关
,从
cmd
窗口执行
ipconfig
,你会看到一行,上面写着什么是你的
网关
[路由器]),键入路由器的用户和密码并对其进行配置。根据路由器和型号,请参阅路由器手册。查找写有
NAT
端口转发
虚拟服务器
的内容。在这种情况下,您可以打开单个端口或一系列端口,键入这些端口应转发的IP地址设备的IP。如果有任何疑问,请在internet上搜索路由器的名称以及如何打开/转发端口。
祝你好运。

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

下面是一个示例,适用于希望使用任何IP在路由器上打开o端口的任何人,而不仅仅是从应用程序运行的当前设备


如果你想奖励积分,你需要在这个问题上设置奖励。此外,你还不清楚你想达到什么目的。你想通过网关从外部访问android设备吗?第一条评论:不幸的是,这个问题在2天后有资格获得奖励:(第二条评论:我想从android设备外部连接到路由器的公共ip:端口,这样我就可以访问连接到路由器的网关设备。(android->external ip:port)->路由器->网关设备(网关设备有自己的ip和mac).所以,如果我理解正确的话…你的android在你的网络之外,你想连接到路由器后面的网关…那么你不能从android设备进行upnp转发。这必须来自网络内部,而不是外部。让我们看看我是否明白了。你有一个路由器和一个连接的设备连接到路由器,并且它有一个开放的IP/端口,您希望通过公用路由器IP从Android设备访问该设备。如果是这种情况,您需要做的就是在路由器中进行NAT,请配置路由器,以便来自外部(internet)连接到该端口的任何人将路由器自动将请求转发到该IP/端口。
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());
    }
}