USB接続されたAndroidモバイルデバイスからPCのローカルホストにアクセスする


88

USB経由でPCにAndroidデバイス(Samsungギャラクシータブ)を接続しています。

WebServicesを使用して、Androidデバイス上のPCのローカルxamppサーバーにあるWebページを実行したいと思います。

PCとAndroidデバイスの両方を同じワイヤレスネットワークに接続していれば、それを実現できます。

ただし、USB接続のみを使用して、ワイヤレス接続なしでローカルホストページにアクセスすることは可能ですか。

(追記:これと同じシナリオは、エミュレーターでアプリを実行し、IP 10.0.2.2を使用してPCのローカルホストにアクセスする場合に機能します)


以下のリンクを使用してください stackoverflow.com/questions/4779963/… それは私のために働いた。

1
Webページのテスト中にファイアウォールをオフにするか、ファイアウォール設定で信頼できるネットワークにIPを追加します。
zeeali 2017年

このブログをチェックしてくださいmycodingchannel.in/blog/…詳細
kontashi 3520年

回答:


34

私はついにこの問題を解決しました。私はFroyoでSamsungGalaxySを使用しました。以下の「ポート」は、エミュレーターに使用するものと同じポート(10.0.2.2:port)です。私がしたこと:

  1. まず、実際のデバイスをUSBケーブルで接続します(デバイスにアプリをアップロードできることを確認してください)
  2. 接続するデバイスからIPアドレスを取得します。これは192.168.xx:portで始まります。
  3. 「ネットワークと共有センター」を開く
  4. デバイスから「ローカルエリア接続」をクリックし、「詳細」を選択します
  5. 「IPv4アドレス」をアプリにコピーして、次のように置き換えます。 http://192.168.x.x:port/test.php
  6. アプリを(再度)実際のデバイスにアップロードします
  7. プロパティに移動し、「USBテザリング」をオンにします
  8. デバイスでアプリケーションを実行する

これで動作するはずです。


これを行うと、不明なホスト例外が発生します。
AaronF 2017年

4
この答えは、機能しているものの、Androidデバイスとコンピューターの両方がワイヤレスアクセスポイントに接続されていることを前提としているようです。これは、作成者が達成しようとしていることとは逆です。
Jacobski 2018

3
これはWindowsのみのソリューションであることに注意してください。
dotnetCarpenter

2
私は@Jacobに同意します、これは質問に答えません。質問自体は、彼がWi-Fi経由で接続できると述べています。
bradlis7 2018

1
これは質問に答えません。:これが正しい答えであるstackoverflow.com/a/53920173/2947592
wvdz

46

Googleはこの種の問題のためのソリューション掲示こちらを

手順:

  • USBデバッグを有効にしてAndroidデバイスと開発マシンを接続します
  • 開発マシンでChromeを開き、新しいタブを開き、新しいブラウザタブを右クリックして、[検査]をクリックします
  • 右上の3つのドットアイコンをクリックします3つのドット-> [その他のツール]、[リモートデバイス]。
  • 画面の下部を見て、デバイス名が緑色の点でリストに表示されていることを確認します。
  • 以下の設定部分を見て、ポート転送マークを確認してください
  • ルールを追加します。たとえば、Python Webサーバーがマシンlocalhost:5000で実行されていて、デバイスポート3333からアクセスする場合3333は、左側に入力して、と入力しlocalhost:5000、[ルールの追加]をクリックします。
  • これで、デバイスからWebサーバーにアクセスできるようになりました。新しいブラウザタブを開いて、デバイスからhttp:// localhost:3333にアクセスしてみてください

宣伝どおりに機能します。また、デバイスとマシンのポートを同じに保つことも可能です:)。(デバイスで別のポートを使用する理由がわからない)
Ralf deKleine19年

これは受け入れられた答えでなければなりません。ローカル開発者に自己署名証明書を使用している場合は、[新規]タブにSSLプロトコルを追加することを忘れないでください(例:localhost:5000)。それは完璧に動作します。
turrican_ 3420年

5
「このパネルは廃止され、同等の機能を備えたchrome:// inspect /#devicesインターフェースが採用されました。」したがってchrome://inspect/#devices、Chromeを貼り付けて、回答のポート転送ステップにスキップしてください。
craastad

ERR_EMPTY_RESPONSEデバイス上のChromeから戻ってきて、これらの手順を機能させる方法を理解するために1時間以上費やしました...デスクトップでローカルホストサーバーを実行しておらず、何もすることがないことにようやく気付くまで実際に接続してください!ドー!サーバー(この場合はApache)を起動すると、すべてがすぐに機能し始めました。重要な最初のステップは、ポートフォワードを設定する前に、宛先サーバーが実際に実行されていることを確認することです。
CubicleSoft

これが最善の解決策です
RaulQuispe20年

16

たくさんのフォーラムを読んでアプリをプレイしてみましたが、今まで解決策が見つかりませんでした。

私のシナリオはあなたのシナリオと似ていると思いますが、他の人を助けるために明確にします。ローカルでホストされているWebサイトとAndroidアプリケーションで使用するWebサービスがあります。ラップトップのみを使用し、ネットワーク接続を使用しないデモのために、これを外出先で機能させる必要があります。

注: iPhoneをwifiホットスポットとして使用し、PCとAndroidデバイスの両方を接続することはできましたが、iPhone 4Sの接続は遅く、定期的に切断されます。

私の解決策は次のとおりです。

  • PCのネットワークケーブルを抜き、wifiをオフにします。
  • Androidデバイスでwifiをオフにします
  • USB経由でAndroidをPCに接続する
  • Androidメニューで「USBテザリング」をオンにします。(ネットワークの下->もっと...->テザリングとポータブルホットスポット ")
  • USBテザリングケーブルによって割り当てられたコンピューターのIPを取得します。(コマンドプロンプトを開き、「ipconfig」と入力して、USBネットワークアダプターが割り当てたIPを探します)
  • localhostの代わりに見つかったIPアドレスを使用してPCでブラウザを開き、テストします。すなわちhttp://192.168.1.1/myWebSite
  • Androidでブラウザを開き、動作をテストします

1
私はNexus10を持っていて、それを機能させることができませんが、どうしても必要です。テザリングオプションはありません!?
ludus H 2017

私もmotog5splusに問題があります。割り当ててもまだ機能しません。
ジガーフマキヤ2018

5

これが私のAndroidアプリのコードの一部です:

このアプリは、サーバー上で実行されているサーブレットとUSBデバッグ可能モードで接続されたAndroidデバイスの間でHTTP取得ポストモデルと通信できます(アプリの開発が進行中であったため)。

サーバーTomcatApache 7が実行されている場合アプリの開発が終了した場合)、Wi-Fi経由でアプリを実行することもできます。

ここに画像の説明を入力してください

あなたのIPアドレスを取得するには

  1. コマンドプロンプトに移動
  2. タイプ ipconfig
  3. Enterキーを押します

リストでは、IPv4アドレス がIPです。


これは不正確です。USBデバッグ可能モードはネットワーク接続を提供しません。また、ADB転送はデバイスがPCに接続することを許可しません。見た目では、USBデバッグではなく、テザリングツールによって提供される可能性のあるUSB経由のネットワーク接続を使用しています。別のオプションは、ADBフォワードを介してsshをトンネリングすることです。
クリス・ストラットン2015

USBデバッグ可能モードがネットワーク接続を提供するという意味ではありませんでした。しかし残念ながら、それがAndroidアプリプロジェクトからAndroidStudioに組み込まれたウェブサーバーへの内部コマンドを実行する唯一の方法でした。あなたの懸念に感謝します、それは新しい開発者にとって混乱するでしょう。AndroidStudioでの開発の進捗状況をアプリとして編集しました。
cagcak 2015

この方向で接続を実現する方法を提供するここでの答えはまだありません。「USBデバッグ可能モード」はそれを行わないので、それをどのように行ったかの正確な説明がなければ、ここで解決策はありません
クリス・ストラットン

4

私はこれをWindowsコンピューターで実行しましたが、完全に機能しました。

携帯電話でUSBテザリングをオンにします。コンピューターのコマンドプロンプトでipconfigと入力し、「イーサネットアダプターローカルエリア接続x」のipv4を見つけます(ほとんどが最初のもの)。モバイルブラウザーに移動し、Webアプリケーションのポート番号を使用してipv4と入力します。例:-192.168.40.142:1342

それはそれらの簡単なステップで動作しました!


4

実際のAndroidデバイスでLocalHostに簡単にアクセスする方法-> USB経由でPCをAndroidデバイスに接続する

  1. Chromeの検査に移動し、[f12]またはControl + Shift + Cをクリックします

Chrome検査ツール

  1. クロム検査ツールの底を確認してください。

  2. 次に、[リモートデバイス]タブの設定に移動します。

[リモートデバイス]タブ

  1. 「USBデバイスの検出」オプションと「ポート転送」オプションをチェックします。

  2. 次に、[ルールの追加]をクリックし、任意のデバイスポート(例:(4880))を入力し、[ローカルアドレス]にローカルホストの実際のアドレス(例:(127.0.0.1:480))を入力します。

  3. ルールを追加した後、Android Studioに移動します->コードURL内(http://127.0.0.1:4880)。ポートを480-> 4880から変更することを忘れないでください。

  4. Chromeの[リモートデバイス]タブに移動し、接続されているデバイスをクリックします。新しいURLを追加(127.0.0.1:4880)AndroidデバイスのChromeブラウザを検査します

実際のデバイスのChromeブラウザを確認し、実際のAndroidデバイスでコードのデバッグを開始します。


1

USB接続タイプのオプションを確認してください。「インターネットパススルー」と呼ばれるものが必要です。それはあなたの電話があなたのPCと同じ接続を使うことを可能にするでしょう。


これが、USB経由でPCの接続を使用するために私が知っている唯一の方法です。だからあなたのデバイスにとって、答えはノーだと思います。シミュレータは、PCの接続を共有するため機能します。
codemonkey 2012年

Sense 3を搭載した新しいHTCデバイスにはオプションがあることを知っています(Ex the Sensation)
codemonkey 2012年

助けてくれてありがとう。オプションのいずれかが機能するかどうかをまだ確認します。
saurabh 2012

1

ジョンの答えはとても気に入りましたが、USB接続のモバイルでクライアントTCPを実行し、ローカルPCでサーバーを実行して、クライアント//サーバー構成をテストしたい人にいくつかの変更を加えたいと思います。

まず、10.0.2.2は実際のハードウェアモバイルであり、シミュレータではないため、機能しないことは明らかです。

したがって、ジョンの指示に従ってください。

  • PCのすべてのネットワークケーブルを抜き、wifiをオフにします。
  • Androidデバイスでwifiをオフにします
  • USB経由でAndroidデバイスをPCに接続します
  • Androidメニューで「USBテザリング」(USBモデム/ USBセルラーモデム/ USBשימושכמודםסלולרי)をオンにします。(ネットワークの下->もっと...->テザリングとポータブルホットスポット ")

    • このUSB接続は、単一のPC接続用のDHCPサーバーとして機能するため、ローカルUSBネットワークでPCに専用(動的)IPを割り当てます。これで、クライアントアプリケーションにこのIPとポートを通知するだけです。
  • PCのIP(USBテザリングケーブルによって割り当てられている)を取得します(コマンドプロンプトを開き、「ipconfig」と入力して、USBネットワークアダプターが割り当てたIPを探します。Linuxでは、ifconfigまたはUbuntuの「接続情報」などです。 ..)

  • (Java-クライアント側)のようなものでそのIP(つまり192.168.42.87)に接続するようにアプリケーションに指示します。

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    楽しい..


1

こんにちはあなたはあなたのxamppローカルホストにアクセスすることができます

  1. コントロールパネル->
  2. WindowsDefenderファイアウォール->
  3. 詳細設定(左側)->インバウンドルール->新しいルール->ポート->特定のローカルポートにApacheポートを書き込む->次へ->次に、ローカルPCを使用してローカルホストにアクセスできますIPアドレス:

0

USBケーブルを介してAndroidスマートフォンを接続し、コンピューター上のhttpサーバーにアクセスします。

  1. ファイアウォール-スイッチをオフにします。すべてが機能したら、インバウンドルールの下にルールを追加し、Apache HTTPサーバー(UDPおよびTCP)(または使用しているHTTPサーバー)を有効にします。警告-ファイアウォールをオフにすると、コンピューターが脆弱になります。インターネット攻撃に。したがって、最初にインターネットをオフにしてネットワークから切断します。ローカルネットワーク上の2つのデバイスを接続しているため、これが機能するためにインターネットに接続している必要はありません。

  2. USBケーブルを差し込みます。ネットワークウィンドウが表示されたら、[ホームネットワーク]を選択します。ポップアップしない場合は、おそらくパブリックに設定されているため(機能しません)、コントロールパネル\ネットワークとインターネット\ネットワークと共有センター(win7内)に移動し、そこでホームネットワークに設定します。写真や音楽を共有するために押すと、次の画面が表示される場合があります...キャンセルをクリックするだけです。メイン画面では、ホームネットワークは引き続きアクティブです。

  3. コンピューターのIPが必要です。ローカルホストまたは他のエイリアスが機能しません。マシンのIPを取得するには、Windowsコマンドラインシェルを起動し(Windowsキー+ Rを押してcmdと入力)、黒いコマンドプロンプトウィンドウが表示されます。「ipconfig」と入力してEnterキーを押します。今探してください

IPv4アドレス。。。。。。。。。。。:192.168。###。###それはあなたの電話があなたのコンピュータに割り当てたIPです

  1. これで完了です。電話のブラウザで、コンピュータのサーバーからテストhtmlファイルにアクセスしてみてください。正常に表示されます。

  2. すべてが機能しているので、コンピュータでファイアウォールとインターネットアクセスを有効にすることをお勧めします。ここで、httpサーバーにもう一度アクセスしてみてください。おそらく機能しません。設定によっては、ルールを追加して許可するように求めるポップアップが表示される場合がありますが、そうでない場合は、自分で追加してください。Windowsファイアウォールを起動し、(サーバーであるため)インバウンドルールに移動して、新しいルールを追加します。「プログラム」を選択します。httpサーバーのexeを見つけ、次の画面で[許可]が選択されていることを確認します。もう一度接続してみてください。これで動作するはずです。そうでない場合は、間違ったexeを選択したことが原因である可能性があります。さらに高度な方法で外部での使用を制限することもできます(インターネット上のすべてのユーザーがインターネットIPアドレスを持っていればアクセスできるため)アクセスを制限するには、作成したばかりの新しいルールを右クリックします。

    Android開発者向けの注意点として、Androidコードでは、「http://」を使用する必要があります。そうしないと機能しません。例:MyAsyncTask.execute( "http://192.168.123.123/test.html")

パートII-IPを固定/静的に設定します。

これで問題は解決しました。ケーブルを抜き差しするたびに、IPが変更されます。また、コード内のような場所で使用している場合は、毎回更新する必要があります。私が思いついた解決策は、IPを静的に設定することです。

  1. 電話を接続してつなぎ留めたら、ネットワークと共有センターに戻り、ローカルエリア接続の[接続]をクリックします。

スクリーンショット

  1. 次の画面で[プロパティ]を選択し、[IP 4]を強調表示して、そこでプロパティを押し、[次のIPアドレスを使用する]をクリックします。
  2. デフォルトゲートウェイとサブネットマスクをipconfigの場合とまったく同じように配置し、IPアドレスの場合は、最後の3桁のみを1〜255のいずれかに変更します。

スクリーンショット

そのIPは新しい固定/静的IPになり、次に電話を接続したときに同じままになります。


0
  1. あなたがしていることを確認し、ADBのコンピュータにインストールされUSBデバッグが電話機で有効にし、携帯電話は、コンピュータへのアクセスを許可しています。USBケーブルを介して電話をコンピューターに接続し、表示されていることを確認します(Bashコマンドに表示されるはずadb devicesです)。
  2. コンピューターのChromeブラウザーで、chrome:// inspect /#devicesを開き、[ポート転送]ボタンをクリックし、[ポート転送を有効にする]をオンにして、電話からアクセスできるようにするコンピューターのポートを追加します(詳細な手順ここ)。chrome:// inspect /#devicesを実行しているタブを開いたままにする必要があります。
  3. 携帯電話のブラウザで、localhost:[port_number]に移動すると、コンピュータで実行されているものがすべて表示されます。

これはWindowsとUbuntuLinuxで機能し、Macでも機能するはずです。


0

私が直面した問題は誰かを助けるかもしれません、私は私のPCとAndroidデバイスが同じWiFiネットワークに接続され、開いたポート8080でPCのIPV4アドレスを介して接続されたAndroidデバイスがファイアウォールを通り抜ける場所で長い間働いていました。

ある日:さまざまな画面でUIをデバッグするために、Genymotionエミュレーターをインストールしました。Genymotion / Virtualboxネットワーク構成のおかげで、WiFiアダプターが台無しになりました。

修正は、WiFiネットワークアダプターでIPV4 / TCP設定を再構成することでした。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.