Androidエミュレーターを使用してラップトップのWebサーバーにアクセスできますが、問題10.0.2.2:portno
なく動作しています。
しかし、実際のAndroidフォンを接続すると、電話のブラウザがラップトップ上の同じWebサーバーに接続できません。電話機はUSBケーブルを使用してラップトップに接続されています。adb devicesコマンドを実行すると、電話が表示されます。
何が欠けていますか?
Androidエミュレーターを使用してラップトップのWebサーバーにアクセスできますが、問題10.0.2.2:portno
なく動作しています。
しかし、実際のAndroidフォンを接続すると、電話のブラウザがラップトップ上の同じWebサーバーに接続できません。電話機は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
は重要なものだけを生成しますlocalhost
およびを除く127.0.0.1
)携帯電話がモバイルネットワークに接続されている場合、状況はさらに難しくなります。
どちらかハードコアに行く:
<your desktop IP>:<server port number>
それ以外の場合は、xip.ioまたはngrokなどを使用してください。
注:このifconfig
コマンドは廃止予定であり、Debianストレッチから始まるDebian Linuxではデフォルトで欠落しています。Debian Linuxのネットワーク構成を調べるための新しい推奨される代替手段は、ipコマンドです。たとえば、ipコマンドを使用してネットワーク構成を表示するには、次のコマンドを実行します。
ip address
上記のipコマンドは、次のように省略できます。
ip a
それでもifconfig
毎日のシステム管理ルーチンの一部として使用したい場合は、net-tools
パッケージの一部として簡単にインストールできます。
apt-get install net-tools
参考はこちら
それは実際には非常に簡単です。
localhost
(WindowsのWAMPサーバーを使用しています)ipconfig
これを完了すると、次のようなものが表示されます。
ワイヤレスLANアダプターワイヤレスネットワーク接続: 接続固有のDNSサフィックス。: リンクローカルIPv6アドレス。。。。。:fe80 :: 80bc:e378:19ab:e448%11 IPv4アドレス。。。。。。。。。。。:192.168.43.76 サブネットマスク 。。。。。。。。。。。:255.255.255.0 デフォルトゲートウェイ 。。。。。。。。。:192.168.43.1
192.168.43.76
)注:ネットワークを「ホームネットワーク」として設定してください。ネットワークをホームネットワークとして設定すると、PCが同じネットワーク上の他のデバイスとデータを共有できるようになります。
Windows 10を使用している場合、これは次のようにして行うことができます。
問題が発生している場合は、Windowsファイアウォールが原因である可能性が高いです。
リモート管理を有効にすることでこれを達成しました:
System preferences/sharing
次のようなメッセージが表示されます。
some.url.com
Androidデバイスで、Macのsome.url.com
委任先であるにアクセスできるようになりlocalhost
ます。を使用ifconfig
して、MacのIPアドレスを取得することもできます。
ngrok
(Node.jsを備えたすべてのOS)を備えたポータブルソリューション一時的なドメインでプロジェクトを公開してもかまわない場合は、を使用できますngrok
。実行localhost:9460
できるアプリがあるとしましょう。
npm install ngrok -g
ngrok http 9460
これは私に与えます:
オンラインのセッション状況 利用可能なアップデートアップデート(バージョン2.2.8、アップデートするにはCtrl-U) バージョン2.2.3 米国(us) Webインターフェイスhttp://127.0.0.1:4040 転送http://f7c23d14.ngrok.io-> localhost:9460 転送https://f7c23d14.ngrok.io-> localhost:9460 接続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
場合、少し調整が必要になります-これはハックなアプローチですが、私にとってはうまくいき、私はそれを改善するための提案を受け入れています:
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
192.168.0.101
が、ホスト名が機能しませんでした。
シンプルな解決策(laptop_ip_addr:port
モバイルデバイスとラップトップが同じWiFiにある場合、モバイルデバイスからのアクセスのみ)で、ERR_CONNECTION_REFUSEDエラーが発生します。つまり、私のMacBookは私の携帯電話からの接続試行を拒否しているようです。
このソリューションは、働く私のため(のMacBookでテスト):
adb reverse tcp:4000 tcp:4000
4000
http://localhost:4000/
実際には、モバイルデバイスではなくラップトップに接続しますこちらの手順をご覧ください。
欠点は、これは一度に1つのモバイルデバイスでのみ機能することです。別のモバイルデバイスでアクセスする場合は、最初のモバイルデバイスを切断して(USBデバッグを無効にする)、新しいデバイスを接続して(USBデバッグを有効にする)、adb reverse tcp:4000 tcp:4000
再度実行する必要があります。
常に動作するはずの別の解決策は、ngrokです(他の回答で述べたとおり)。ローカルネットワークではなく、インターネット経由で機能します。
使い方は非常に簡単です。
brew cask install ngrok
ngrok http 4000
これは、いくつかの情報の中で、次のような行を出力します
Forwarding http://4cc5ac02.ngrok.io -> localhost:4000
これでhttp://4cc5ac02.ngrok.io
、インターネットに接続されている任意のデバイスに移動でき、このURL localhost:4000
はラップトップにリダイレクトされます。
ngrokコマンドが実行されている限り(Ctrl-Cを押すまで)、プロジェクトは公的に提供されます。URLを知っている人なら誰でも見ることができます。
この問題の迅速な解決策を見つけました。このリンクを試してください。問題の修正に役立ちます。
変更したのは1つだけです。チュートリアルでは、「127.0.0.1」を「すべて」に変更し、サーバーが実行されているIPアドレスに変更します。
その後、ローカルホストに接続できるはずです。
以下は、リンクされたページからの情報の(校正)コピーです。
Wampサーバー(または他の任意のサーバー)をインストールします。
これは、ローカルサーバーをセットアップするために私が知っている最高のサーバーの1つです。Apacheまたはその他のサーバーをインストールしている場合は、この手順を無視してください。
ここからWamp Serverをダウンロードしてインストールします。
Windowsファイアウォールでポート80の新しいルールを追加します。
コントロールパネルを開き、Windowsファイアウォールを選択します。
Windowsファイアウォールの設定ページの左側のパネルから[詳細設定]を選択します。
左側のパネルから[受信の規則]を選択し、[新しい規則]を選択します。
「ポート」を選択して「次へ」をクリックします。
「特定のローカルポート」ラジオボタンを選択し、ポート値として80を入力します。
[接続を変更しない]を維持して、次の手順に進みます。
プロファイルオプションを変更せずに、[次へ]をクリックします。
新しいルールに適切な名前を付け、[完了]をクリックします。
これにより、ローカルネットワークIPでポート80アクセスが有効になります。
Wampサーバーのhttpd.confファイルを編集して、403エラーを修正します。
このファイルを編集する必要があります。そうしないと、ローカルネットワークIPを介してローカルホストにアクセスするときに、403 forbiddenエラーが発生します。
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経由でローカルホストにアクセスするのに役立つことを願っています。
# onlineoffline tag - don't remove Order Allow,Deny Allow from all
Windows PCの場合「ipconfig」コマンドを使用してIPv4アドレスを見つける以外に何もする必要がない場合があります。
その他の環境の詳細:Windows 7、Google Nexus 4(4.2.2)、Tomcatサーバー、Grailsアプリケーション。
また、AndroidManifestファイルでインターネットにアクセスする権限があることを確認する必要があります。
<uses-permission android:name="android.permission.INTERNET"/>
java.io.FileNotFoundException: http://192.168.8.65:8000/app/web/users/
ただし、はるかに優れたソリューションがあります。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
「Chrome for Androidのポート転送を使用すると、モバイルで開発サイトを簡単にテストできます。これは、モバイルデバイスでリッスンTCPポートを作成し、開発マシンの特定のTCPポートにマップすることで機能します。これらのポート間のトラフィックはUSBを経由します。そのため、接続はネットワーク構成に依存しません。」
詳細はこちら:https : //developer.chrome.com/devtools/docs/remote-debugging#port-forwarding
このソリューションは、モバイルデバイスとコンピューターが同じネットワークにない場合に使用できます。
この場合、ポート転送を使用する必要があります。Google Chromeの検査ウィンドウ(chrome:// inspect)では、接続されているデバイスを確認できます。
ポートフォワディングボタンをクリックし、ラップトップが使用するポート(たとえば8080)にランダムポート(たとえば3000)を設定します。
デバイスからlocalhost:3000を使用して、ラップトップのlocalhost:8080(or_whatever_ip:portno)にアクセスします。モバイルブラウザで確認できます。モバイルブラウザーでlocalhost:3000を試してください。[ポート転送設定]ウィンドウの[ポート転送を有効にする]チェックボックスを必ずオンにしてください
管理者としてCMDを実行する
CMD画面でipconfigと入力すると、画面にテキストが表示されます
この写真のように
そしてあなたはあなたが接続しているあなたのPCと同じネットワークに接続しなければならないこのIPを使用してあなたのローカルホストにアクセスできます
このファイルに移動してみてください:
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アドレスに変更します。
デフォルトのlocalhostに簡単な方法は、http:// localhost:portを使用することです。これはラップトップとAndroidでも機能します。
それが機能しない場合は、Androidで電話のデフォルトIPを127.0.0.1:portに設定します:)
ターミナルを開いて入力:-
hostname -i
#127.0.0.1
hostname -I
#198.168.*.*
いくつかの異なるlocalhostサーバーを使用してこの問題に遭遇していました。最後に、Pythonのシンプルなサーバーを使用するだけで、数秒で電話でアプリを起動して実行できました。それは数秒しかかからないので、より複雑なソリューションに入る前に試す価値があります。まず、Pythonがインストールされていることを確認します。cmd+r
そしてpython
Windows用にタイプするか$ python --version
Macのターミナルで。
次:
cd <your project root>
$ python -m SimpleHTTPServer 8000
次に、ネットワーク上のホストマシンのアドレスSystem Preferences/Sharing
を見つけます。Macでそれを見つけるために使用しました。それをあなたのAndroidデバイスにタップするindex.html
とあなたがロードされ、あなたは良いはずです。
そうでない場合、問題は別の問題であり、他の提案された解決策のいくつかを調べたい場合があります。幸運を!
*編集*
Chromeを使用している場合に試すもう1つの簡単な解決策は、Webサーバーfor Chrome拡張機能です。私はそれが私の携帯電話でlocalhostにアクセスするための迅速で超簡単な方法だとわかりました。ちょうどのAccessible to local network
下で確認してくださいOptions
、それは問題なくあなたの細胞で動作するはずです。
ngrokを使用すると、ローカルホストを一時サーバーに配置でき、設定は非常に簡単です。リンクにあるいくつかの手順をここに示しました。
ngrok http [port number]
ローカルホストを指すアドレスが付いた小さなダッシュボードがターミナルに表示されます。アプリをそのアドレスに向け、デバイスにビルドします。
まず最初に、携帯電話とコンピューターを一般的なwifiに接続します。
次に、管理者として実行を使用してコマンドプロンプトを開きます。
ipconfigコマンドを与える
無線LAN IPを示しています
電話でアクセスするには、サーバーのip:portを使用します
まず、マシン(サーバーが実行されている場所)のIPアドレスを静的にします。この静的IPアドレスをAndroidコードに入力します。次に、wifiルーターのインターフェースに移動し、左側のパネルを確認します。ポート転送/転送などのオプションが表示されます。それをクリックしてポート80を転送します。htttpd.conf
ファイルを編集して、
すべてから許可
。サーバーを再起動します。すべてが正常に動作するはずです。
さらに、マシンのIPアドレスを予約して、常に割り当てられるようにすることができます。ルーターのインターフェースの左側のパネルで、を見つけてDHCP -> Address Reservation
クリックします。マシンのMACアドレスと、コードに入力したIPアドレスを入力します。保存をクリックします。これにより、指定したIPアドレスがマシンに予約されます。
私のラップトップに基づいて私のモバイルデバイスを私のWampサーバーに接続するソリューション:
まず、wifiはルーターではありません。ラップトップのlocalhostに基づいてモバイルデバイスをwampサーバーに接続するには、ルーターが必要です。無料の仮想ルーターをダウンロードしてインストールしました:https : //virtualrouter.codeplex.com/
設定は本当に簡単です:
次に、ブラウザーを起動してラップトップのIPV4アドレスを入力することにより、デバイスを介してラップトップに接続できます(Windowsでそれを見つけるには、cmdと入力します:ipconfig、そしてipv4アドレスを見つけます)。
wampサーバーのホームページが表示されます。
1つの回答は受け入れられましたが、これは私にとってはうまくいきましたが:
ifconfig
ターミナル内のMacタイプの場合、en0/en1 -> inet
それがのようなものであることを確認してください19*.16*.1.4
。)(Windowsでは、 `ipconfigを使用します)モバイル設定を開き、ネットワークに移動します-> Wi-Fiネットワークを長押しします->ネットワークを変更します->スクロールして詳細オプションに移動します->プロキシマニュアルを選択し、プロキシホスト名にアドレスを19*.16*.1.4
入力します。つまり、内部ポートでポートを入力します。それを保存します。
what is my ip
グーグルクロームで検索し、あなたのIPを取得し、それがそうだとしましょう1**.1**.15*.2**
1**.1**.15*.2**:port/
モバイルデバイスからアクセスしてみ てください。これと同じくらい簡単です。
これは私にとってうまくいきました、私が使用したいデバイスの正確なローカルネットワークIPアドレス(パブリックIPアドレスではなく)を指定するために、127.0.0.1 IPの後に別の行を追加しました。私の場合、Samsung 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などのサブドメイン全体を含めることもできます。
Ngrokは最良のソリューションです。PHPを開発している場合は、Laravel Valetをインストールすることをお勧めします。これにはMacOSバージョンとLinuxバージョンがあり、valet share
コマンドを使用できます。フロントエンド技術を開発していて、3000のようなポートを共有する必要がある場合は、ngrokを直接使用しますngrok http 3000
将来の開発者のためのソリューションを追加します。
IPアドレスのアドレスをコピーします。ネットワークを右クリック->ネットワークと共有->現在使用している接続をクリック->詳細->次に、ipv4アドレスの横のアドレスがIPアドレスです。これをどこかにメモしてください
コントロールパネル->システムとセキュリティ-> Windowsファイアウォール->詳細設定->インバウンドルール->新しいルール(80などのポートを追加する手順に従ってください)
メモしたIPアドレスを電話のブラウザに、その横にルールを作成したポート番号を入力します。例:192.168.0.2:80およびwala。
接続しない場合の考えられる解決策。ネットワークを右クリックし、[ネットワークを開いて共有]をクリックします。アクティブな接続を確認し、接続の種類で接続の名前の下に表示されます。接続がパブリックの場合はクリックし、必ずホームネットワークに変更してください。
チェックすべきもう1つのことは、2.4Gと5Gの両方が有効になっていて、デバイスの周波数が異なる場合に、一部のルーターで要求のブリッジに問題があることです。両方のデバイスが同じインターフェイスに接続されるように、周波数の1つを無効にしてみます。
または同等のものを使用しconnectify
、xampp
モバイルURLバーにIPアドレスを入力してアクセスします
個人的には、デバイスを使用するときにlocalhostを使用するように要求することはなく、簡単な解決策はありません。
エミュレータを使用できるlocalhostに接続するアクティビティを開始するだけです。デバイスから取得する必要のある情報はすべて簡単に生成でき、パラメータとしてアクティビティに送信できます。