如何使用另一台设备的 IP 将端口从 Android 设备转发到路由器?
我想从外部从 android 设备连接到路由器 public ip:port 以便我可以访问连接到路由器的硬件设备。(Android -> 外部 IP:Port) -> Router -> hardware Device(硬件设备有自己的 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());
}
}
上面的代码没有崩溃,但也没有创建任何端口!
这可能吗? 如果答案是肯定的,你能给我指出正确的方向吗?
最佳答案
找到了这个问题的答案。 第一步是在路由器上启用 UPNP 选项,此步骤后导入库 net.sbbi.upnp 搜索路由器 (IGD) 设备并使用方法 addPortMapping .
这是一个示例,适用于任何想要使用任何 IP 在路由器上打开 o 端口的人,而不仅仅是从运行该应用程序的当前设备。
关于java - 安卓端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22399994/