Android端口转发

如何使用来自其他设备的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()); } } 

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

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

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

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

https://github.com/ManolescuSebastian/Port_Forward_Android

您必须通过桌面连接到您的路由器,任何浏览器(iexplorer,chrome等)尝试连接到地址192.168.1.1 (您的gateway ,从cmd窗口执行ipconfig ,你会看到一行说什么是你的gateway [路由器]),输入路由器的用户名和密码并进行配置。 取决于路由器和型号,请参阅路由器手册。 寻找有关NATPort ForwardVirtual Server 。 您可以打开单个端口或一系列端口,键入应转发这些端口的IP地址,在这种情况下是设备的IP。 如有任何疑问,请在互联网上搜索路由器的名称以及如何打开/转发端口。

祝你好运。