[英]How can I access my localhost from my Android device?
我可以使用 Android 模擬器訪問我的筆記本電腦網絡服務器,我正在使用10.0.2.2:portno
運行良好。
但是當我連接我真正的安卓手機時,手機瀏覽器無法連接到我筆記本電腦上的同一個網絡服務器。 手機使用 USB 數據線連接到筆記本電腦。 如果我運行 adb devices 命令,我可以看到我的手機。
我錯過了什么?
USB 不為移動設備提供網絡。
如果您的桌面和手機都連接到同一個 WiFi (或任何其他本地網絡),則使用路由器分配的桌面 IP 地址(不是localhost
也不是127.0.0.1
)。
要找出您桌面的 IP 地址:
ipconfig
(Windows) 或ifconfig
(Unix)
ifconfig | grep "inet " | grep -v 127.0.0.1
ifconfig | grep "inet " | grep -v 127.0.0.1
ifconfig | grep "inet " | grep -v 127.0.0.1
只會產生重要的東西localhost
和127.0.0.1
)如果您的手機已連接到移動網絡,那么事情會變得更加困難。
要么去鐵桿:
<your desktop IP>:<server port number>
注意: ifconfig
命令已被棄用,因此默認情況下在 Debian Linux 上缺失,從 Debian stretch 開始。 在 Debian Linux 上檢查網絡配置的新推薦替代方法是 ip 命令。 例如,要使用 ip 命令顯示網絡配置,請運行以下命令:
ip address
上面的ip命令可以簡寫為:
ip a
如果您仍然喜歡使用ifconfig
作為日常系統管理例程的一部分,您可以輕松地將其安裝為net-tools
包的一部分。
apt-get install net-tools
參考在這里
其實很簡單。
localhost
啟動您的服務器(我正在使用 Windows 的 WAMP 服務器)ipconfig
完成后,您將看到類似以下內容:
Wireless LAN adapter Wireless Network Connection: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::80bc:e378:19ab:e448%11 IPv4 Address. . . . . . . . . . . : 192.168.43.76 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.43.1
192.168.43.76
)注意:請將您的網絡設置為“家庭網絡”。 將網絡設置為家庭網絡意味着您允許您的 PC 與同一網絡上的其他設備共享內容。
如果您使用的是 Windows 10,則可以通過以下方式完成:
如果您遇到問題,很可能與 Windows 防火牆有關。
使用簡單的解決方案(只需從移動設備訪問laptop_ip_addr:port
,當手機和筆記本電腦在同一個WiFi上時),我得到一個ERR_CONNECTION_REFUSED錯誤。 也就是說,我的 MacBook 似乎拒絕來自我的手機的連接嘗試。
該解決方案適用於我(使用 MacBook 測試):
adb reverse tcp:4000 tcp:4000
4000
http://localhost:4000/
,它實際上會連接到筆記本電腦,而不是移動設備請參閱此處的說明。
缺點是這一次只能使用一個移動設備。 如果你想用另一個移動設備訪問,你必須先斷開第一個(禁用USB 調試),連接新的(啟用USB 調試),然后再次運行adb reverse tcp:4000 tcp:4000
。
編輯:據報道,此解決方案也適用於 Windows。
另一個應該始終有效的解決方案是ngrok (如其他答案中所述)。 它在 Internet 上工作,而不是在本地網絡上工作。
它非常易於使用:
brew cask install ngrok
ngrok http 4000
除了一些其他信息之外,這會輸出一行,如
Forwarding http://4cc5ac02.ngrok.io -> localhost:4000
現在,您可以在任何連接到 Internet 的設備上導航到http://4cc5ac02.ngrok.io
,此 URL 將重定向到筆記本電腦的localhost:4000
。
請注意,只要 ngrok 命令正在運行(直到您按下Ctrl-C ),您的項目就會被公開提供。 擁有該 URL 的每個人都可以看到它。
我通過啟用遠程管理實現了這一點:
System preferences/sharing
您將看到與此類似的消息:
some.url.com
管理您的計算機在您的 Android 設備上,您現在應該可以訪問some.url.com
,它代表您 Mac 上的localhost
。 您還可以使用ifconfig
獲取 Mac 的 IP 地址。
ngrok
的便攜式解決方案(任何帶有 Node.js 的操作系統) 如果您不介意使用臨時域公開您的項目,您可以使用ngrok
。 假設我有一個在localhost:9460
上運行的應用程序,我可以簡單地編寫
npm install ngrok -g
ngrok http 9460
這會給我:
Session Status online Update update available (version 2.2.8, Ctrl-U to update) Version 2.2.3 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://f7c23d14.ngrok.io -> localhost:9460 Forwarding https://f7c23d14.ngrok.io -> localhost:9460 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
我現在可以訪問https://f7c23d14.ngrok.io
作為遠程查看localhost
的一種方式。 這非常適合與客戶分享設計工作或進展。
nginx
代理通行證的替代解決方案如果您通過nginx proxy_pass
運行類似的東西,則需要進行更多調整 - 這是一種 hacky 方法,但它適用於我,我願意接受有關改進它的建議:
81
而不是80
sudo nginx -s reload
http://youripaddress:81
server {
listen 80;
listen 81; # <-------- add this to expose the app on a unique port
server_name ~^(local|local\.m).example.com$;
# ...
}
重新加載並訪問http://youripaddress:81
我找到了一個快速解決這個問題的方法。 試試這個鏈接。 它應該可以幫助您解決問題。
我只更改了一件事,教程指出您將“127.0.0.1”更改為“全部”,將其更改為您的服務器正在運行的 IP 地址。
之后,您應該能夠連接到您的本地主機。
以下是鏈接頁面中信息的(校對)副本:
安裝 Wamp 服務器(或您喜歡的任何其他服務器)。
這是我所知道的設置本地服務器的最佳服務器之一。 如果您已安裝 Apache 或任何其他服務器,請忽略此步驟。
從這里下載並安裝 Wamp Server。
在 Windows 防火牆中為端口 80 添加新規則。
打開控制面板並選擇 Windows 防火牆。
從 Windows 防火牆設置頁面的左側面板中選擇高級設置。
從左側面板中選擇入站規則,然后選擇新建規則。
選擇端口並單擊下一步。
選擇“特定本地端口”單選按鈕並輸入 80 作為端口值。
保持允許連接不變並進入下一步。
保持配置文件選項不變,然后單擊下一步。
為您的新規則起一個好聽的名稱,然后單擊完成。
這將啟用對本地網絡 IP 的端口 80 訪問。
編輯 Wamp 服務器的 httpd.conf 文件以修復 403 錯誤。
我們需要編輯這個文件。 否則,當我們通過本地網絡 IP 訪問 localhost 時,會出現 403 禁止錯誤。
單擊 Wamp 服務器托盤圖標。
打開 Apache 服務器子菜單。
選擇 httpd.conf。
在 httpd.conf 文件中找到這部分配置:
Directory “c:/wamp/www/” # # Possible values for the Options directive are “None”, “All”, # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that “MultiViews” must be named *explicitly* — “Options All” # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be “All”, “None”, or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride all # # Controls who can get stuff from this server. # # onlineoffline tag – don't remove Order Deny,Allow Deny from all Allow from 127.0.0.1
查找“127.0.0.1”並將其替換為“全部”,保存文件,然后重新啟動 Wamp 服務器。
查找您的本地網絡 IP。
打開命令提示符。
鍵入並輸入ipconfig
命令。
就我而言,我的局域網地址是 10.0.0.2。
這是您通過 wifi 訪問 Android 手機上的本地主機所需的 IP。 要測試它是否正常工作,請在安裝了本地主機服務器的桌面瀏覽器中輸入此 IP 地址。 瀏覽器應該會成功顯示您的 localhost 頁面。 這將確保此本地網絡 IP 現在可以在您的 Android 手機上成功訪問。
我希望本教程能幫助您通過 wifi 訪問您的 localhost。
在 Windows PC 上,除了使用“ipconfig”命令找出您的 IPv4 地址外,您可能不需要做任何其他事情。
其他環境詳細信息:Windows 7、Google Nexus 4 (4.2.2)、Tomcat 服務器、Grails 應用程序。
您還應該確保您在 AndroidManifest 文件中有訪問互聯網的權限:
<uses-permission android:name="android.permission.INTERNET"/>
然而,有一個更好的解決方案。 您可以使用 IP 地址“10.0.2.2”訪問您的主機。 這是由 Android 團隊以這種方式設計的。 因此,您的網絡服務器可以在 localhost 上完美運行,並且您可以從您的 Android 應用程序通過“http://10.0.2.2:8080”訪問它。
由於這是一個老問題,因此有一種非常簡單的新方法可以做到這一點。 下載ADB Chrome 擴展程序,然后按照以下說明進行操作:
https://developers.google.com/chrome-developer-tools/docs/remote-debugging
“Android 版 Chrome 上的端口轉發使您可以輕松地在移動設備上測試您的開發站點。它通過在您的移動設備上創建一個偵聽 TCP 端口來工作,該端口映射到您的開發機器上的特定 TCP 端口。這些端口之間的流量通過 USB 傳輸,因此連接不依賴於您的網絡配置。”
更多詳細信息: https ://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding
以管理員身份運行 CMD
並在 CMD 屏幕上鍵入ipconfig ,屏幕將顯示文本
作為這張照片
並且您可以使用此 ip 訪問您的本地主機,您必須連接到與您的 PC 連接到相同的網絡
Windows解決方案:
您無法查看您的網站,主要是因為您的防火牆(默認操作系統防火牆或防病毒防火牆)阻止了傳入連接。
在 Windows 防火牆上:
要允許特定端口上的傳入連接,請轉到:
控制面板 > Windows Defender 防火牆 > 高級設置 > 右鍵單擊入站規則 > 添加新規則。
然后 :
- 選擇“端口”單選按鈕。
- 輸入您要啟用傳入連接的特定端口/范圍(您的服務器正在運行的端口)
- 選擇“允許連接”單選按鈕。
- 單擊下一步(除非您想更改默認值)
- 為您的規則命名,然后單擊完成。
筆記:
如果您使用的是具有防火牆的防病毒軟件,則上述步驟將不起作用,因為防病毒軟件會禁用 Windows 防火牆,而是運行自己的防火牆。
在這種情況下,根據防病毒程序,轉到防病毒軟件的防火牆設置並打開端口。
嘗試轉到此文件: C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf
# onlineoffline tag - don't remove
Order Deny,Allow
Allow from all // change it Deny
Allow from 127.0.0.1
並將 10.0.2.2 更改為您的 IP 地址。
您可能讓您的網絡服務器在您的環回接口而不是您的網絡接口上偵聽。 這方面的主要跡象是:
127.0.0.1
和localhost
(來自 localhost 或 Android 模擬器)工作192.168.xxx.xxx
的點擊不起作用,無論是來自 localhost、LAN 還是 WAN我在這里的答案中更多地討論了診斷和解決此問題。
在您的 ubuntu/Macbook 中使用它來獲取系統的 IP 地址。 您的手機和系統應該在同一個網絡中
ip addr | grep inet
ip addr | grep inet
這將為您提供一個類似於192.168.168.46
的 IP 地址。 在您的智能手機中使用它。
希望這可以幫助。
ngrok允許您將 localhost 放到臨時服務器上,並且設置起來非常簡單。 我在這里提供了一些步驟,可以在鏈接中找到:
ngrok http [port number]
您將在終端中看到一個小儀表板,其地址指向您的本地主機。 將您的應用程序指向該地址並構建到您的設備。
終於在 Ubuntu 中完成了,我在 localhost:8080 上運行 nodejs 服務器
1) 打開終端類型 ifconfig 你會得到類似這樣的 ip:inet addr:192.168.43.17
2)現在簡單地輸入這樣的url地址:“192.168.43.17:8080”(8080端口來自本地主機端口號)例如:“192.168.43.17:8080/fetch”
默認 localhost 的更簡單方法是使用http://localhost:port 。 這也適用於筆記本電腦和 Android。
如果它不起作用,那么在 android 中將手機的默認 IP 設置為 127.0.0.1:port :)
打開終端並輸入:-
hostname -i
#127.0.0.1
hostname -I
#198.168.*.*
如果您使用的是真實設備並且仍然遇到問題,請按照以下步驟操作,因為這些步驟可以幫助我解決問題:
https://localhost:44301
adb reverse tcp:44301 tcp:44301
port number
替換44301
希望您能夠毫無問題地運行。
Happy codding
這對我有用,我在 127.0.0.1 ip 之后添加了另一行來指定我想使用的設備的確切本地網絡 IP 地址(不是公共 IP 地址)。 就我而言,我的三星 Galaxy S3
根據 Bangptit 的建議,編輯 httpd.conf 文件(x 是版本號): C:\wamp\bin\apache\Apache2.xx\conf\httpd.conf
搜索 onlineoffline 標簽並添加你手機的 ip(我在我的路由器配置頁面中找到了我的手機 ip 地址):
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.65
Allow from ::1
Allow from localhost
也可以將其擴展到包括整個子域,例如 192.168.1.0/24 等
基於我的筆記本電腦將我的移動設備連接到我的 wamp 服務器的解決方案:
首先,wifi不是路由器。 因此,要將我的移動設備連接到我筆記本電腦上基於 localhost 的 wamp 服務器,我需要一個路由器。 我已經下載並安裝了一個免費的虛擬路由器: https ://virtualrouter.codeplex.com/
配置它非常簡單:
然后您可以通過啟動瀏覽器通過您的設備連接到您的筆記本電腦並填寫筆記本電腦的 IPV4 地址(要在 Windows 上找到它,輸入 cmd : ipconfig,然后找到 ipv4 地址)
您應該會看到您的 wamp 服務器主頁。
使用幾個不同的本地主機服務器遇到了這個問題。 最終,只需使用 Python 簡單服務器,我的應用程序就可以在幾秒鍾內在手機上啟動並運行。 它只需要幾秒鍾,所以在進入任何更復雜的解決方案之前值得一試。 首先,確保您已安裝 Python。 cmd+r
並在 Windows 中輸入python
或在 mac 終端中輸入$ python --version
。
下一個:
cd <your project root>
$ python -m SimpleHTTPServer 8000
然后只需在網絡上找到您的主機地址,我使用 Mac 上的System Preferences/Sharing
找到它。 將其點擊到您的 Android 設備中,應該會加載您的index.html
,您應該會很好。
如果不是,則問題出在其他問題上,您可能需要研究其他一些建議的解決方案。 祝你好運!
* 編輯 *
如果您使用的是 Chrome,另一個可以嘗試的快速解決方案是 Web Server for Chrome 擴展。 我發現這是一種在手機上訪問 localhost 的快速且超級簡單的方法。 只需確保在Options
下選中Accessible to local network
,它應該可以在您的手機上正常工作。
首先將手機和電腦連接到普通wifi。
然后,使用以管理員身份運行打開命令提示符
給出 ipconfig 命令
哪個顯示無線局域網ip
使用服務器的 ip:port 訪問手機
最簡單的方法(這對我來說完美無缺)是在0.0.0.0:<port_no>
本地托管您的網站並使用移動設備訪問它,在瀏覽器中使用<local_ipv4_address>:<port_no>/<path>
。
ipconfig
Ngrok是最好的解決方案。 如果你正在開發 PHP,那么我推薦安裝Laravel Valet ,它有 MacOS 和 Linux 版本,那么你可以使用valet share
命令。 如果你正在開發任何前端技術並且需要共享一個像 3000 這樣的端口,那么直接使用 ngrok ngrok http 3000
您還可以在 Windows 中將 ngrok 與 Xampp 一起使用。 您可以使用以下過程。 這很容易和簡單。
現在您可以在任何設備(即您的物理 android 設備)上使用此轉發鏈接,它將托管您的 localhost 服務器。 例如,
代替
http://localhost/my-files/
和
http://YOUR_FORWARDING_ADDRESS/my-files/
首先讓你的機器(服務器運行的地方)IP地址是靜態的。 在 android 代碼中輸入此靜態 IP 地址。 接下來轉到您的wifi路由器界面並檢查左側面板。 您將看到諸如端口轉發/轉發之類的選項。 單擊它並轉發端口 80。現在編輯您的htttpd.conf
文件並對其進行編輯
全部允許
. 重新啟動您的服務器。 現在一切都應該正常了。
此外,您可以保留機器的 IP 地址,以便始終分配給您。 在路由器界面的左側面板中,找到DHCP -> Address Reservation
,單擊它。 輸入您機器的 MAC 地址和您在代碼中輸入的 IP 地址。 點擊保存。 這將為您的機器保留給定的 IP 地址。
為未來的開發人員添加解決方案。
復制您的IP地址的地址。 右鍵單擊您的網絡->網絡和共享->單擊您當前擁有的連接->詳細信息->然后ipv4地址旁邊的地址是您的IP地址,請在某處記下
轉到控制面板 -> 系統和安全 -> windows 防火牆 -> 高級設置 -> 入站規則 -> 新規則(按照步驟添加端口,例如 80,它真的很簡單)
將您在手機瀏覽器上記下的 IP 地址和您為其創建規則的端口號放在旁邊。 例如 192.168.0.2:80 和 wala。
如果它沒有連接可能的解決方案。 右鍵單擊網絡->打開網絡和共享->查看活動連接,在連接類型下的連接名稱下,如果它是公共的,請單擊它,並確保將其更改為家庭網絡。
雖然一個答案已被接受,但這對我有用:
ifconfig
並查找en0/en1 -> inet
它應該類似於19*.16*.1.4
。)(在 Windows 上,使用 `ipconfig) 打開您的移動設置並轉到網絡-> 長按您的 wifi 網絡-> 修改網絡-> 向下滾動到高級選項-> 選擇代理手冊並在代理主機名中輸入您的地址,即19*.16*.1.4
內部端口輸入您的港口。 並保存它。
在谷歌瀏覽器中搜索what is my ip
,並獲取你的 ip,假設它是1**.1**.15*.2**
1**.1**.15*.2**:port/
。就這么簡單。
什么對我有用(目標:從運行在 android 手機上的客戶端應用程序調試在 localhost:99999 上運行的 Windows 服務器應用程序)
然后可以從手機訪問服務應用程序 url (my_dev_machine_ip:99999/path_to_service)。
它非常簡單, - GOTO 命令行(Window + R [type cmd]) - 輸入 ipconfig ,這將顯示您 PC 的當前 IP 地址 - 在您的 Android 手機瀏覽器上寫下 taht IP 地址:80 例如( http:// 192.168.xx:80 )
完畢
localhost 將出現在您的手機上
簡單的。 首先讓你的安卓設備和電腦連接在同一個網絡上。例如路由器通過windows+R打開命令提示符並搜索cmd然后打開。 在命令上鍵入 ipconfig 並獲取 ipv4 地址。
注意:防火牆會阻止您通過網絡訪問您的計算機,因此無論是公共的還是私有的,您都需要關閉網絡的防火牆。
如何關閉防火牆 打開控制面板 > 系統和安全 > windows 防火牆 > 在左側窗格中選擇打開和關閉 windows 防火牆。 > 然后選擇關閉windows防火牆(不推薦)
你完成了
然后打開您的移動設備並運行您的 ip 地址 192.168.1.xxx
要檢查的另一件事是,當啟用 2.4G 和 5G 並且設備處於不同頻率時,某些路由器會出現橋接請求的問題。 嘗試禁用其中一個頻率,以便兩個設備連接到同一接口。
基於 Ilya Saunkin 的回答,這里有一個命令應該輸出您的 IP 地址,格式為超鏈接 - 只需將 3000 替換為您的端口號:
ifconfig | grep "inet " | grep -v 127.0.0.1 | sed 's/netmask.*//g' | sed 's/inet//g' | awk '{print "http://"$1":3000/"}'
根據您運行命令的位置,您應該能夠(在 Mac 上)按住命令鍵並單擊/雙擊以打開鏈接。
(例如,如果您使用 WAMP 服務器):
1) 在您的 PC 上安裝您的 Android 驅動程序並下載便攜式Android Tethering Reverse Tool並通過Reverse Tool 應用程序連接您的 Android 設備。
2) 點擊 WAMP 圖標 > 上線(重啟后)。
3)在安卓瀏覽器中打開你的IP(即http://192.168.1.22
或http://164.92.124.42
)
要查找您的本地 IP 地址,請單擊開始>運行>cmd並鍵入ipconfig ,您的 IP 地址將顯示在輸出中。
就這樣。 現在您可以從 Android 訪問(打開)localhost。
使用connectify
和xampp
或等效的,並在移動 URL 欄上鍵入 ip 地址以訪問
我個人在使用設備時並不堅持使用localhost,沒有簡單的解決方案。
只需啟動您連接到本地主機的活動,您可以在其中使用模擬器。 您必須從設備獲取的任何信息都可以輕松生成,並可以作為參數發送到活動。
在 linux 上使用ip addr
而不是ifconfig
因為ifconfig
已被棄用多年,並且在最近的發行版中默認未安裝
如果您的服務器位於 8080,則在 Mac 上在終端中運行此命令
echo "
rdr pass inet proto tcp from any to any port 8080 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
擁有一個 netconfig xml 並在 manifest.xml 中分配它是最好的解決方法。 這將繞過 androids 默認的 https only 約束。
在創建應用程序時,使用移動設備進行調試或渲染很有幫助。 可以使用帶有端口號的 IPv4 地址的移動設備訪問系統 localhost。 應該注意的是,要實現這一點,兩個設備都應該連接到同一個 wifi 或網絡,並且機器網絡應該是私有的。
這些答案都沒有提到從 Windows Defender 防火牆打開 Apache HTTP 服務器。 使用 XAMPP v. 5.6.40,您可以嘗試以下解決方案:
ipconfig
。 記下您的 IP 地址。如果你在 Linux 上運行,這對我有用
sudo iptables -F
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.