我有一個HTTP服務器託管在我的Android設備上。我希望它能夠從互聯網上訪問它,即使它連接到家庭WiFi(無線路由器後面)。訪問NAT的HTTP服務器
此外,在路由器上配置靜態端口轉發不是一種選擇,因爲從互聯網上我將無法訪問路由器配置。
我有什麼選擇嗎?
我嘗試這樣做:
Android應用程序將來自Android設備HTTP請求(本地IP地址,比如192.168.0.1)從一個特定端口號(比如8080),通過家庭互聯網上的Web服務器WIFI,
路由器會將其源地址修改爲其公網IP地址(比如111.100.45.65)和源端口號修改爲任意隨機端口號(比如39824),並在其動態NAT表中創建一個條目。
內部IP內部端口外部端口 192.168.0.1 8080 39824
按我的理解,這個條目保留爲atleast幾個小時。 互聯網上的Web服務器將分別報告源IP和端口爲111.100.45.65和39824。
在將Android應用程序的HTTP請求發送到Internet上的Web服務器之後,我在設備的端口8080上運行HTTP服務器。現在,如果我要將來自Internet的HTTP請求發送到端口39824處的地址111.100.45.65,則應該由設備上運行的HTTP服務器接收(路由器將解析來自其動態NAT表的請求並將其發送到我的設備) 。
但由於某種原因,此請求未得到解決。任何指針。
你真的想爲此使用VPN。 –
VPN也不是一個選項。我正在嘗試實現tcp打孔。我從android上的特定端口(路由器後面)連接到公共服務器。另外,我正在我應用程序的同一端口的另一個線程中偵聽。因爲公共服務器現在知道路由器的IP和端口,所以線程是否應該能夠從公共服務器上的客戶端接收HTTP請求? – rohitverma