如何使用其他设备的IP从Android设备转发到路由器?
我想从Android设备外部连接到路由器公共IP:端口,以便我可以访问连接到路由器的硬件设备。(Android - >外部IP:端口) - >路由器 - >硬件设备(硬件设备有自己的IP和mac)。
代码:
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());
}
}
上面的代码没有崩溃,但它也没有创建任何端口!
这可能吗? 如果答案是肯定的,你能否指出我正确的方向。
答案 0 :(得分:4)
找到这个问题的答案。 第一步是在路由器上启用 UPNP 选项,在此步骤之后导入库net.sbbi.upnp搜索路由器(IGD)设备并使用方法 addPortMapping
以下是任何想要使用任何IP在路由器上打开o端口的人的示例,而不仅仅是应用程序运行的当前设备。
答案 1 :(得分:0)
您必须通过桌面与任何资源管理器(iexplorer,chrome等)连接到您的路由器,尝试连接到地址192.168.1.1
(您的gateway
,执行{{1}在ipconfig
窗口中,您将看到一行显示您的cmd
[路由器]),输入路由器的用户名和密码并进行配置。取决于路由器和型号,请参阅路由器手册。查找标有gateway
,NAT
或Port Forward
的内容。您可以打开单个端口或一系列端口,键入应转发这些端口的IP地址,在这种情况下是设备的IP。如有任何疑问,请在互联网上搜索路由器的名称以及如何打开/转发端口。
祝你好运。