USB bağlantılı Android mobil cihazdan bilgisayarın yerel ana bilgisayarına erişim


88

Bilgisayarıma USB ile bağlı bir android cihazım (Samsung galaxy sekmesi) var.

Android cihazımdaki bilgisayarımın yerel xampp sunucusunda bulunan Web Hizmetlerini kullanmak ve bir web sayfasını çalıştırmak istiyorum.

Aynı kablosuz ağa bağlı hem bilgisayarım hem de android cihazım varsa bunu başarabilirim.

Ancak localhost sayfasına herhangi bir kablosuz bağlantı olmadan sadece USB bağlantısını kullanarak erişmek mümkündür.

(Not: Uygulamayı bir emülatörde çalıştırdığımda ve bilgisayarımdaki localhost'a erişmek için ip 10.0.2.2 kullandığımda aynı senaryo işe yarar)


Lütfen aşağıdaki bağlantıyı kullanın stackoverflow.com/questions/4779963/… Benim için çalıştı.

1
Web sayfanızı test ederken güvenlik duvarını kapatın veya güvenlik duvarı ayarlarında güvenilen ağlara ipinizi ekleyin.
zeeali

Yanıtlar:


34

Sonunda bu sorunu çözdüm. Froyo ile Samsung Galaxy S kullandım. Aşağıdaki "bağlantı noktası", emülatör için kullandığınız bağlantı noktasıyla aynıdır (10.0.2.2:port). Ben ne yaptım:

  1. önce gerçek cihazınızı USB kablosuyla bağlayın (uygulamayı cihazınıza yükleyebildiğinizden emin olun)
  2. IP adresini bağladığınız cihazdan alın, 192.168.xx ile başlar: bağlantı noktası
  3. "Ağ ve Paylaşım Merkezi" ni açın
  4. cihazdan "Yerel Alan Bağlantısı" na tıklayın ve "Ayrıntılar" ı seçin
  5. "IPv4 adresini" uygulamanıza kopyalayın ve aşağıdaki gibi değiştirin: http://192.168.x.x:port/test.php
  6. uygulamanızı (tekrar) gerçek cihazınıza yükleyin
  7. özelliklere gidin ve "USB tethering" i açın
  8. uygulamanızı cihazda çalıştırın

Şimdi çalışmalı.


Bunu yaparsam, bilinmeyen bir ana bilgisayar istisnası alırım.
AaronF

4
Görünüşe göre bu cevap, işe yararken, hem Android cihazının hem de bilgisayarın, yazarın başarmaya çalıştığının aksine, kablosuz bir erişim noktasına bağlı olduğunu varsayıyor.
Jacobski

3
Bunun yalnızca Windows çözümü olduğu unutulmamalıdır.
dotnetCarpenter

2
@ Jacob'a katılıyorum, bu soruya cevap vermiyor. Sorunun kendisi, wifi üzerinden bağlanabileceğini belirtir.
bradlis7

1
Bu soruya cevap vermiyor. Doğru cevap bu: stackoverflow.com/a/53920173/2947592
wvdz

46

Google burada bu tür bir sorun için bir çözüm yayınladı .

Adımlar:

  • Android cihazınızı ve geliştirme makinenizi USB hata ayıklama etkinleştirilmiş olarak bağlayın
  • Geliştirme makinenizde Chrome'u açın, yeni sekme açın, yeni tarayıcı sekmesine sağ tıklayın, incele'ye tıklayın
  • Sağ üst taraftaki üç nokta simgesini üç nokta, -> Diğer Araçlar, Uzak Aygıtlar'ı tıklayın.
  • Ekranın altına bakın, cihaz adınızın Yeşil renkli noktayla listede göründüğünden emin olun.
  • Ayarlar kısmına bakın, Port yönlendirme işaretini kontrol edin
  • Kural ekleyin. Örneğin, python web sunucunuz makineniz localhost: 5000 üzerinde çalışıyorsa ve buna cihaz portunuz 3333'ten erişmek istiyorsanız 3333, sol kısma yazıp yazıp localhost:5000kural ekle'ye tıklayın.
  • Voila, artık web sunucunuza cihazınızdan erişebilirsiniz. Yeni tarayıcı sekmesi açmayı deneyin ve cihazınızdan http: // localhost: 3333 adresini ziyaret edin .

İlan edildiği gibi çalışır. Ayrıca portları cihazda ve makinede tutun aynı şekilde mümkündür :). (Cihazdaki başka bir bağlantı noktasını neden kullanmak istediğinizden emin değilim)
Ralf de Kleine

Kabul edilen cevap bu olmalıdır. Yerel geliştiriciniz için kendinden imzalı bir sertifika kullanıyorsanız, SSL protokolünü Yeni sekmeye eklemeyi unutmayın, örn. Localhost: 5000 . Mükemmel çalışıyor.
turrican_34

5
"Bu panel, eşdeğer işlevselliğe sahip chrome: // inspect / # devices arayüzü lehine kullanımdan kaldırılmıştır." Bu yüzden sadece chrome://inspect/#deviceskromu yapıştırın ve cevabın Port yönlendirme adımına geçin .
craastad

Bu talimatları ERR_EMPTY_RESPONSEcihazda Chrome'dan geri dönerek nasıl çalıştıracağımı anlamaya çalışmak için bir saatten fazla zaman harcadım ... ta ki sonunda localhost sunucumu masaüstümde çalıştırmadığımı ve yapacak hiçbir şey olmadığını anlayıncaya kadar aslında bağlanın! Doh! Sunucuyu başlattı (bu durumda Apache) ve her şey hemen çalışmaya başladı. Önemli bir ilk adım, bağlantı noktasını ileriye doğru ayarlamadan önce hedef sunucunuzun gerçekten çalıştığından emin olmaktır.
CubicleSoft

bu en iyi çözüm
Raul Quispe

16

Çok sayıda forum okudum ve uygulamaları oynamayı denedim ancak şimdiye kadar bir çözüm bulamadım.

Benim senaryomun sizinkine benzer olduğuna inanıyorum, ancak başkalarına yardım etmek için açıklığa kavuşturacağım. Android uygulamam tarafından kullanılacak yerel olarak barındırılan bir web sitem ve web hizmetlerim var. Bunu sadece dizüstü bilgisayarımla ve ağ bağlantısı olmadan gösteri için yolda çalıştırmam gerekiyor.

Not: iPhone'umu bir wifi etkin noktası olarak kullanmak ve hem bilgisayarımı hem de android cihazımı bağlamak işe yaradı, ancak iPhone 4S bağlantısı yavaş ve düzenli olarak kesiliyor.

Benim çözümüm aşağıdaki gibidir:

  • PC'deki ağ kablolarını çıkarın ve wifi'yi kapatın.
  • Android cihazda kablosuz bağlantıyı kapat
  • Android'i USB üzerinden bilgisayara bağlayın
  • Android menüsünde "USB Tethering" i açın. (Ağlar altında-> daha fazlası ...-> İnternet paylaşımı ve taşınabilir erişim noktası ")
  • Bilgisayarınızın USB bağlama kablosuyla atanmış IP'sini alın. (komut istemini açın ve "ipconfig" yazın, ardından USB ağ adaptörünün atadığı IP'yi arayın)
  • Test etmek için localhost yerine bulunan IP adresini kullanarak PC'de bir tarayıcı açın. yanihttp://192.168.1.1/myWebSite
  • Android'de bir tarayıcı açın ve çalıştığını test edin

1
Nexus 10'um var ve bunun benim için çalışmasını sağlayamıyorum ama çaresizce ihtiyacım var. Bağlama seçeneği yok !?
Ludus H

Moto g5s plus'ta da bir sorunum var. Hâlâ atadığım iş değil.
Jigar Fumakiya

5

İşte Android uygulamamın kodunun bir parçası:

Bu uygulama arasında bir HTTP alma sonrası modeli ile iletişim kurabilir bir sunucu uygulaması bir sunucu ve üzerinde çalışan bir Android cihazdan (USB-debuggable modunda takılı uygulama ilerleme gelişmekte olduğu için ).

Ayrıca Tomcat Apache 7 sunucusu çalışırken ( uygulama geliştirme bittiğinde ) uygulamayı Wi-Fi üzerinden çalıştırabilirim .

görüntü açıklamasını buraya girin

IP adresinizi almak için

  1. Komut İstemi'ne git
  2. Tür ipconfig
  3. Enter tuşuna basın

Listede, IPv4 Adresi IP'nizdir .


Bu yanlıştır. USB hata ayıklama modu bir ağ bağlantısı sağlamaz ve ADB yönlendirmeleri aygıtın PC ile iletişim kurmasına izin vermez. Görünüşe göre, USB hata ayıklama değil, muhtemelen bir bağlama aracı tarafından sağlanan USB üzerinden bir ağ bağlantısı kullanıyorsunuz. Diğer bir seçenek de, bir ADB üzerinden ileriye doğru ssh tüneli oluşturmaktır.
Chris Stratton

USB hata ayıklanabilir modunun bir ağ bağlantısı sağladığı anlamına gelmemiştim. Ancak ne yazık ki, bir android uygulama projesinden Android Studio'ya gömülü web sunucusuna gelen bazı dahili komutları gerçekleştirmenin tek yolu buydu. Endişeniz için teşekkürler, yeni geliştiriciler için geçiş kafa karıştırıcı olabilir. Android Studio'da geliştirilmekte olan uygulama olarak düzenlendi.
cagcak

Bu yönde bağlantıya ulaşmak için bir yöntem sağlayan burada hala bir cevap yok. "USB hata ayıklama modu" bunu yapmaz, bu nedenle nasıl yaptığınıza dair doğru bir açıklama olmadan burada bir çözüm olamaz .
Chris Stratton

4

Bunu bir Windows bilgisayarında yaptım ve mükemmel çalıştı!

Cep telefonunuzda USB Tethering'i açın. Bilgisayarınızdaki komut istemine ipconfig yazın ve "ethernet adaptörü yerel alan bağlantısı x" (çoğunlukla ilki) için ipv4'ü bulun Şimdi mobil tarayıcınıza gidin, web uygulamanızın bağlantı noktası numarasıyla o ipv4'ü yazın. örneğin: - 192.168.40.142:1342

Bu basit adımlarla çalıştı!


4

Gerçek Android Cihazda LocalHost'a Nasıl Kolayca Erişilir -> PC'nizi Android cihaza USB üzerinden bağlayın

  1. Chrome incelemesine gidin 'f12' veya Control + Shift + C'ye tıklayın

Chrome İnceleme aracı

  1. Krom inceleme aracının altını kontrol edin.

  2. Şimdi Uzak Aygıt Sekmesindeki ayarlara gidin.

Uzak Cihazlar Sekmesi

  1. "USB Aygıtını Keşfedin" seçeneğini işaretleyin ve "Bağlantı Noktası Yönlendirme" seçeneğini işaretleyin.

  2. Şimdi Kural Ekle'ye tıklayın, Herhangi Bir Cihaz Portunu Girin örn. (4880) ve Yerel Adres'e benim durumumda yerel ana bilgisayarın Gerçek Adresini girin örn. (127.0.0.1:480)

  3. Kuralı ekledikten sonra android stüdyonuza gidin -> kod URL'nizin içine ( http://127.0.0.1:4880 ). Bağlantı noktasını 480 -> 4880'den değiştirmeyi unutmayın.

  4. Chrome'da Uzak Cihaz Sekmesine gidin ve bağlı Cihazınıza tıklayın. Yeni URL Ekle (127.0.0.1:4880) Android Cihaz Chrome Tarayıcısını İnceleyin

Gerçek Cihaz Chrome Tarayıcınızı kontrol edin ve Gerçek Android cihazda kodda hata ayıklamaya başlayın.


1

USB bağlantı türü seçeneklerini kontrol edin. "İnternet geçişi" adında birine sahip olmalısınız. Bu, telefonunuzun bilgisayarınızla aynı bağlantıyı kullanmasına izin verecektir.


Bilgisayar bağlantısını USB üzerinden kullanmanın bildiğim tek yolu bu. Yani cihazınız için cevabın hayır olduğunu tahmin ediyorum. Simülatör, bilgisayarınızın bağlantısını paylaştığı için çalışır.
codemonkey

Sense 3'e sahip yeni HTC cihazlarının (Ex the Sensation) seçeneğine sahip olduğunu biliyorum
codemonkey

yardım için çok teşekkürler. yine de seçeneklerden herhangi birinin çalışıp çalışmadığını kontrol etmek için.
saurabh

1

John'un cevabını çok beğendim, ancak USB bağlantılı Mobil'de bir istemci TCP'si ve yerel PC'de bir sunucu çalıştırarak bazı istemci // sunucu yapılandırmasını test etmek isteyenler için bazı değişiklikler yapmak istiyorum.

İlk olarak, 10.0.2.2'nin çalışmayacağı çok açık çünkü bu bir simülatör değil, GERÇEK bir mobil donanımdır.

Bu yüzden John'un talimatlarını izleyin:

  • Bilgisayardaki tüm ağ kablolarını çıkarın ve wifi'yi kapatın.
  • Android cihazda kablosuz bağlantıyı kapatın
  • Android cihazı USB üzerinden bilgisayara bağlayın
  • Android menüsünde "USB İnternet Paylaşımı" nı (USB Modem / USB Hücresel Modem / USB שימוש כמודם סלולרי) açın. (Ağlar altında-> daha fazlası ...-> İnternet paylaşımı ve taşınabilir erişim noktası ")

    • Bu USB bağlantısı, tek PC bağlantınız için bir DHCP sunucusu görevi görecek, böylece PC'nize yerel USB ağında özel (dinamik) bir IP atayacaktır. Şimdi tek yapmanız gereken istemci uygulamasına bu IP'yi ve bağlantı noktasını söylemektir.
  • Bilgisayarınızın IP'sini alın (USB bağlantı kablosuyla atanmış.) (Komut istemini açın ve "ipconfig" yazın, ardından USB ağ adaptörünün atadığı IP'yi, Linux'ta ifconfigveya Ubuntu'nun "Bağlantı bilgileri" vb. ..)

  • Uygulamaya bu IP'ye (yani 192.168.42.87) (Java - istemci tarafı) gibi bir şeyle bağlanmasını söyleyin:

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

    Zevk almak..


1

Merhaba xampp localhost'unuza şu yolla erişebilirsiniz

  1. Kontrol paneli ->
  2. windows defender güvenlik duvarı ->
  3. Gelişmiş ayar (sol tarafta) -> Gelen Kuralları -> Yeni Kural -> Bağlantı Noktası -> belirli yerel bağlantı noktasında Apache bağlantı noktalarınızı yazın -> sonraki -> ardından yerel bilgisayar kullanarak yerel ana makinenize erişebilirsiniz IP adresi:

0

Android telefonun USB kablosuyla bağlanması ve Bilgisayardaki http sunucusuna erişilmesi.

  1. Güvenlik duvarı - kapatın, her şey çalıştığında, Gelen kuralları altında bir kural ekleyebilir, Apache HTTP Sunucusunu (UDP ve TCP) (veya kullandığınız herhangi bir HTTP sunucusunu) etkinleştirebilirsiniz Uyarı - güvenlik duvarını kapatırsanız, bilgisayarınız savunmasız hale gelir İnternet saldırılarına. Bu yüzden önce interneti kapatın ve ağ bağlantısını kesin. Yerel ağda iki cihazı bağladığınız için bunun çalışması için internette olmanıza gerek yoktur.

  2. USB kablosunu takın. Ağ oluşturma penceresi açılırsa, Ev Ağı'nı seçin. Açılmazsa, muhtemelen Genel olarak ayarlanmıştır (bu işe yaramaz), bu nedenle: Denetim Masası \ Ağ ve İnternet \ Ağ ve Paylaşım Merkezi'ne (win7'de) gidin ve orada Ev Ağı olarak ayarlayın. Resimleri, Müzikleri paylaşmak için bastıktan sonra size bir sonraki ekran verebilir ... üzerindeki iptal düğmesine tıklamanız yeterlidir. Ana ekranda Ev Ağı hala aktif olacaktır.

  3. Bilgisayarın IP'sine ihtiyacınız var, localhost veya diğer takma adlar çalışmıyor. Makinenizin IP'sini almak için, Windows komut satırı kabuğunu başlatın (Windows Tuşu + R'ye basın ve cmd yazın), siyah komut istemi penceresi açılmalıdır, "ipconfig" yazın ve enter tuşuna basın. Şimdi bak

IPv4 Adresi. . . . . . . . . . . : 192.168. ###. ### Telefonunuzun bilgisayarınıza atadığı IP budur

  1. Şimdi, telefonun tarayıcısında, bilgisayarınızın sunucusundan bir test html dosyasına erişmeyi deneyin, iyi görünmesi gerekir.

  2. Artık her şey çalıştığına göre, muhtemelen bilgisayarınızda güvenlik duvarını ve İnternet erişimini etkinleştirmek isteyeceksiniz. Şimdi http sunucunuza tekrar erişmeyi deneyin. Muhtemelen işe yaramayacak. Kurulumunuza bağlı olarak, buna izin vermek için bir kural eklemenizi isteyen bir açılır pencere alabilirsiniz, ancak bunu yapmazsanız, kendiniz eklemeniz yeterlidir. Windows güvenlik duvarını başlatın ve Gelen Kuralları'na gidin (çünkü bu bir sunucu) ve Yeni Kural ekleyin. "Program" ı seçin. Http sunucunuzun exe dosyasını bulun ve sonraki ekranda İzin Ver'in seçili olduğundan emin olun. Tekrar bağlanmayı deneyin ve şimdi çalışmalıdır. Değilse, muhtemelen yanlış exe seçmiş olmanızdan kaynaklanmaktadır. Dış kullanımı kısıtlamak için daha da ileri gidebilirsiniz (çünkü artık internetteki herkes sizin İnternet IP adresinize sahipse ona erişebilir) Erişimi kısıtlamak için az önce oluşturduğunuz yeni kurala sağ tıklayabilirsiniz,

    Android geliştiricileri için not, artık android kodunuzda "http: //" kullanmanız gerekir, aksi takdirde çalışmaz. Örneğin: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Bölüm II - IP'yi sabit / statik olarak ayarlama.

Artık işler işe yaradığına göre, kabloyu her çıkarıp tekrar taktığınızda IP'niz değişecektir. Ve bir kodun içinde gibi bir yerde kullanıyorsanız, her seferinde güncellemeniz gerekir! Bulduğum çözüm, IP'yi statik olarak ayarlamaktır.

  1. Telefonu bağlayıp bağladıktan sonra, Ağ ve Paylaşım Merkezi'ne geri dönün ve Yerel Alan bağlantısı "Bağlantılar" seçeneğini tıklayın:

ekran görüntüsü

  1. Sonraki ekranda Özellikler'i seçin, ardından IP 4'ü vurgulayın ve oradaki özelliklere basın ve "Aşağıdaki IP adresini kullan" ı tıklayın.
  2. Varsayılan Ağ Geçidini ve Alt Ağ Maskesini tam olarak ipconfig'teki gibi yerleştirin ve IP Adresi için yalnızca son 3 haneyi 1'den 255'e kadar değiştirin

ekran görüntüsü

Bu IP, yeni sabit / statik IP'niz olacak ve telefonu bir sonraki takışınızda aynı kalacaktır.


0
  1. Emin olması olun adb bilgisayarda yüklü , USB hata ayıklama telefonda etkin ve telefon bilgisayara erişimi sağladı. Telefonu USB kablosuyla bilgisayara takın ve görünür olduğundan emin olun (Bash komutunda görünmesi gerekir adb devices.
  2. Bilgisayarınızın Chrome tarayıcısında, chrome: // inspect / # devices açın , "Bağlantı noktası yönlendirme" düğmesini tıklayın, "Bağlantı noktası yönlendirmeyi etkinleştir" seçeneğini işaretleyin ve telefondan erişilebilir olmasını istediğiniz bilgisayara bağlantı noktasını ekleyin ( ayrıntılı talimatlar burada ). Chrome: // inspect / # devices çalıştıran sekmeyi açık tutmanız gerekir.
  3. Telefonunuzun tarayıcısında localhost'a gidin: [port_number] ve bilgisayarda çalışan her şeyi göstermesi gerekir.

Bu, Windows ve Ubuntu Linux'ta çalışır ve Mac'te de çalışmalıdır.


0

Karşılaştığım sorun belki birisine yardımcı olur, uzun süredir bilgisayarım ve android cihazımın aynı WiFi ağına bağlı olduğu ve 8080 portu açık olan pc'nin IPV4 adresi üzerinden bağlanan android cihazının yangın duvarından geçtiği yerde çalışıyordum.

BİR GÜN: Farklı ekranlarda kullanıcı arayüzünde hata ayıklamak için Genymotion emülatörü kurdum. Genymotion / Virtualbox ağ yapılandırmalarına TEŞEKKÜRLER, WiFi bağdaştırıcımı mahvetti.

Düzeltme, WiFi ağ adaptöründeki IPV4 / TCP ayarlarını yeniden yapılandırmaktı:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.