USB로 연결된 Android 모바일 장치에서 PC의 로컬 호스트에 액세스


88

USB를 통해 내 PC에 연결된 Android 장치 (삼성 갤럭시 탭)가 있습니다.

WebServices를 사용하고 내 안드로이드 장치에서 내 PC의 로컬 xampp 서버에있는 웹 페이지를 실행하고 싶습니다.

동일한 무선 네트워크에 연결되어있는 내 PC와 Android 장치가 모두 있으면이를 달성 할 수 있습니다.

그러나 USB 연결 만 사용하여 무선 연결없이 로컬 호스트 페이지에 액세스 할 수 있습니다.

(추신 :이 시나리오는 에뮬레이터에서 앱을 실행하고 ip 10.0.2.2를 사용하여 PC의 로컬 호스트에 액세스 할 때 작동합니다.)


아래 링크를 사용하십시오 . stackoverflow.com/questions/4779963/… 그것은 나를 위해 일했습니다.

1
웹 페이지를 테스트하는 동안 방화벽을 끄거나 방화벽 설정에서 신뢰할 수있는 네트워크에 IP를 추가하십시오.
zeeali

자세한 내용은 이 블로그 mycodingchannel.in/blog/… 를 확인하십시오.
kontashi35

답변:


34

마침내이 문제를 해결했습니다. Froyo와 함께 Samsung Galaxy S를 사용했습니다. 아래의 '포트'는 에뮬레이터에 사용하는 것과 동일한 포트입니다 (10.0.2.2:port). 제가 한:

  1. 먼저 실제 기기를 USB 케이블로 연결하세요 (기기에 앱을 업로드 할 수 있는지 확인하세요)
  2. 연결 한 장치에서 192.168.xx : port로 시작하는 IP 주소를 가져옵니다.
  3. "네트워크 및 공유 센터"를 엽니 다.
  4. 장치에서 "로컬 영역 연결"을 클릭하고 "세부 정보"를 선택합니다.
  5. "IPv4 주소"를 앱에 복사하고 다음과 같이 바꿉니다. http://192.168.x.x:port/test.php
  6. 실제 장치에 앱을 다시 업로드하십시오.
  7. 속성으로 이동하여 "USB 테 더링"을 켭니다.
  8. 장치에서 응용 프로그램 실행

이제 작동합니다.


이렇게하면 알 수없는 호스트 예외가 발생합니다.
AaronF

4
이 답변은 작동하는 동안 Android 장치와 컴퓨터가 모두 작성자가 달성하려는 것과 반대되는 무선 액세스 포인트에 연결되어 있다고 가정합니다.
Jacobski

3
이것은 Windows 전용 솔루션입니다.
dotnetCarpenter

2
@Jacob에 동의합니다. 이것은 질문에 대한 답변이 아닙니다. 질문 자체는 그가 와이파이를 통해 연결할 수 있다는 것을 말합니다.
bradlis7

1
이것은 질문에 대한 답이 아닙니다. 이것이 정답입니다 : stackoverflow.com/a/53920173/2947592
wvdz

47

Google은 여기 에 이러한 종류의 문제에 대한 해결책을 게시했습니다 .

단계:

  • USB 디버깅이 활성화 된 상태에서 Android 기기와 개발 머신을 연결합니다.
  • 개발 컴퓨터에서 Chrome을 열고 새 탭을 열고 새 브라우저 탭을 마우스 오른쪽 버튼으로 클릭 한 다음 검사를 클릭합니다.
  • 오른쪽 상단의 점 3 개 아이콘 세 점-> 기타 도구, 원격 장치를 클릭합니다.
  • 화면 하단에서 장치 이름이 목록에 녹색 점으로 표시되는지 확인합니다.
  • 아래 설정 부분을보고 포트 포워딩을 확인하십시오. 마크를
  • 규칙을 추가합니다. 예를 들어, 파이썬 웹 서버가 localhost : 5000 컴퓨터에서 실행 중이고 장치 포트 3333에서 액세스 3333하려면 왼쪽 부분에 입력하고localhost:5000 규칙 추가를 클릭합니다.
  • Voila, 이제 장치에서 웹 서버에 액세스 할 수 있습니다. 새 브라우저 탭을 열고 장치에서 http : // localhost : 3333 을 방문 하십시오.

광고 된대로 작동합니다. 또한 장치와 컴퓨터의 포트를 동일하게 유지하는 것이 가능합니다.). (장치에서 다른 포트를 사용하려는 이유를 잘 모르겠습니다.)
Ralf de Kleine

이것은 받아 들여진 대답이어야합니다. 로컬 개발자에 자체 서명 된 인증서를 사용하는 경우 새 탭 (예 : localhost : 5000) 에 SSL 프로토콜을 추가해야합니다 . 완벽하게 작동합니다.
turrican_34

5
"이 패널은 동일한 기능을 제공하는 chrome : // inspect / # devices 인터페이스 대신 사용이 중단되었습니다." 따라서 chrome://inspect/#devices크롬에 붙여넣고 답변 의 포트 전달 단계로 건너 뜁니다 .
craastad

ERR_EMPTY_RESPONSE기기의 Chrome에서 돌아 오는 데이 지침을 적용하는 방법을 알아 내려고 한 시간 이상을 보냈습니다 ... 드디어 내 데스크톱에서 내 로컬 호스트 서버를 실행하고 있지 않다는 것을 깨달을 때까지 실제로 연결합니다! 도! 서버 (이 경우 Apache)를 시작하고 모든 것이 즉시 작동하기 시작했습니다. 중요한 첫 번째 단계는 포트 전달을 설정하기 전에 대상 서버가 실제로 실행 중인지 확인하는 것입니다.
CubicleSoft

이 최선의 해결책이다
라울 키스 페

16

많은 포럼을 읽고 플레이 앱을 사용해 보았지만 지금까지 해결책을 찾지 못했습니다.

내 시나리오는 당신과 비슷하다고 생각하지만 다른 사람들을 돕기 위해 명확히 할 것입니다. 내 Android 애플리케이션에서 사용할 로컬 호스팅 웹 사이트와 웹 서비스가 있습니다. 랩톱 만 사용하고 네트워크 연결없이 데모를 위해 이동 중에이 작업을 수행해야합니다.

참고 : 내 iPhone을 Wi-Fi 핫스팟으로 사용하고 내 PC와 Android 기기를 모두 연결하면 작동했지만 iPhone 4S 연결이 느리고 정기적으로 끊어집니다.

내 솔루션은 다음과 같습니다.

  • PC에서 네트워크 케이블을 분리하고 Wi-Fi를 끕니다.
  • Android 기기에서 Wi-Fi 끄기
  • USB를 통해 안드로이드를 PC에 연결
  • 안드로이드 메뉴에서 "USB 테 더링"을 켭니다. (네트워크-> 자세히 ...-> 테 더링 및 휴대용 핫스팟 ")
  • USB 테더 케이블로 할당 된 컴퓨터의 IP를 가져옵니다. (명령 프롬프트를 열고 "ipconfig"를 입력 한 다음 USB 네트워크 어댑터가 할당 한 IP를 찾습니다.)
  • 테스트 할 로컬 호스트 대신 찾은 IP 주소를 사용하여 PC에서 브라우저를 엽니 다. 즉http://192.168.1.1/myWebSite
  • Android에서 브라우저를 열고 작동하는지 테스트하십시오.

1
넥서스 10을 가지고 있는데 제대로 작동하게 할 수 없지만 절실히 필요합니다. 테 더링 옵션이 없습니다!?
Ludus H

moto g5s plus에서도 문제가 있습니다. 할당은 여전히 ​​작동하지 않습니다.
Jigar Fumakiya

5

다음은 내 Android 앱 코드입니다.

이 앱은 서버에서 실행중인 서블릿 과 USB 디버그 가능 모드에 연결된 Android 장치 간에 HTTP get-post 모델과 통신 할 수 있습니다 ( 앱이 개발 중이었기 때문에 ).

또한 서버 인 Tomcat Apache 7이 실행될 때 Wi-Fi를 통해 앱을 실행할 수 있습니다 ( 앱 개발이 완료되었을 때 ).

여기에 이미지 설명 입력

당신의 IP 주소를 얻으려면

  1. 명령 프롬프트로 이동
  2. 유형 ipconfig
  3. Enter를 누르십시오.

목록에서 IPv4 주소 는 사용자의 IP입니다.


이것은 정확하지 않습니다. USB 디버깅 가능 모드는 네트워크 연결을 제공하지 않으며 ADB 전달을 통해 장치가 PC에 연결할 수 없습니다. 외관상 USB 디버깅이 아닌 테 더링 도구에서 제공하는 USB를 통한 네트워크 연결을 사용하고 있습니다. 또 다른 옵션은 ADB 전달을 통해 ssh를 터널링하는 것입니다.
Chris Stratton 2015

USB 디버그 가능 모드가 네트워크 연결을 제공한다는 의미는 아닙니다. 그러나 안타깝게도 Android 앱 프로젝트에서 Android Studio에 내장 된 웹 서버로 들어오는 일부 내부 명령을 수행하는 유일한 방법이었습니다. 관심을 가져 주셔서 감사합니다. 새로운 개발자에게는 혼란 스러울 것입니다. Android Studio에서 개발중인 앱으로 편집되었습니다.
cagcak 2015-04-13

이 방향으로 연결을 달성하는 방법을 제공하는 답변 은 아직 없습니다 . "USB 디버거 블 모드"는 그렇게하지 않습니다. 그래서 어떻게했는지에 대한 정확한 설명 없이는 여기에 해결책이 없습니다 .
Chris Stratton 2015

4

나는 Windows 컴퓨터에서 이것을했고 완벽하게 작동했습니다!

모바일에서 USB 테 더링을 켭니다. 컴퓨터의 명령 프롬프트에 ipconfig를 입력하고 "이더넷 어댑터 로컬 영역 연결 x"(대부분 첫 번째)에 대한 ipv4를 찾습니다. 이제 모바일 브라우저로 이동하여 웹 응용 프로그램의 포트 번호와 함께 ipv4를 입력합니다. 예 :-192.168.40.142:1342

간단한 단계로 작동했습니다!


4

실제 Android 장치에서 LocalHost에 쉽게 액세스하는 방법-> USB를 통해 PC를 Android 장치와 연결

  1. Chrome 검사로 이동하여 'f12'또는 Control + Shift + C를 클릭합니다.

크롬 검사 도구

  1. 크롬 검사 도구의 바닥을 확인하십시오.

  2. 이제 원격 장치 탭의 설정으로 이동하십시오.

원격 장치 탭

  1. "USB 장치 검색"옵션과 "포트 포워딩"옵션을 확인하십시오.

  2. 이제 규칙 추가를 클릭하고 모든 장치 포트 (예 : 4880)를 입력하고 로컬 주소에 로컬 호스트의 실제 주소를 입력합니다 (예 : (127.0.0.1:480)).

  3. 규칙을 추가 한 후 Android 스튜디오-> 코드 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

나는 센스 3 새로운 HTC 장치가 옵션 (예 감각)이 알
codemonkey

도움을 주셔서 감사합니다. 여전히 옵션이 작동하는지 확인합니다.
saurabh 2011

1

나는 John의 대답을 매우 좋아했지만 USB에 연결된 Mobile에서 클라이언트 TCP를 실행하고 로컬 PC에서 서버를 실행하여 일부 클라이언트 // 서버 구성을 테스트하려는 사람들에게 몇 가지 변경 사항을 제공하고 싶습니다.

먼저 10.0.2.2가 시뮬레이터가 아닌 실제 하드웨어 모바일이기 때문에 작동하지 않는다는 것이 분명합니다.

따라서 John의 지시를 따르십시오.

  • PC에서 모든 네트워크 케이블을 분리하고 Wi-Fi를 끕니다.
  • Android 기기에서 Wi-Fi 끄기
  • USB를 통해 안드로이드 장치를 PC에 연결
  • 안드로이드 메뉴에서 "USB 테 더링"(USB 모뎀 / USB 셀룰러 모뎀 / USB שימוש כמודם סלולרי)을 켭니다. (네트워크-> 더보기 ...-> 테 더링 및 휴대용 핫스팟 ")

    • 이 USB 연결은 단일 PC 연결을위한 DHCP 서버 역할을하므로 PC에 로컬 USB 네트워크의 전용 (동적) IP를 할당합니다. 이제 클라이언트 애플리케이션에이 IP와 포트를 알리기 만하면됩니다.
  • PC의 IP (USB 테더 케이블에 의해 할당 됨)를 가져옵니다 (명령 프롬프트를 열고 "ipconfig"를 입력 한 다음 Linux에서 ifconfig또는 Ubuntu의 "연결 정보"등에서 USB 네트워크 어댑터가 할당 한 IP를 찾습니다). ..)

  • (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. Windows 수비수 방화벽->
  3. 고급 설정 (왼쪽)-> 인바운드 규칙-> 새 규칙-> 포트-> 특정 로컬 포트에 Apache 포트 작성-> 다음-> 다음으로 로컬 PC를 사용하여 로컬 호스트에 액세스 할 수 있습니다. IP 주소:

0

USB 케이블을 통해 안드로이드 폰을 연결하고 컴퓨터의 http 서버에 액세스합니다.

  1. 방화벽-스위치를 끄고 모든 것이 작동하면 인바운드 규칙 아래에 규칙을 추가하고 Apache HTTP Server (UDP 및 TCP) (또는 사용중인 HTTP 서버)를 활성화 할 수 있습니다. 경고-방화벽을 끄면 컴퓨터가 취약 해집니다. 인터넷 공격에. 따라서 먼저 인터넷을 끄고 네트워크 연결을 끊으십시오. 로컬 네트워크에서 두 개의 장치를 연결하기 때문에이 작업을 위해 인터넷에 연결되어 있지 않아도됩니다.

  2. USB 케이블을 연결합니다. 네트워킹 창이 나타나면 홈 네트워크를 선택합니다. 팝업되지 않으면 공용 (작동하지 않음)으로 설정되어있을 수 있으므로 제어판 \ 네트워크 및 인터넷 \ 네트워크 및 공유 센터 (win7에서)로 이동하여 홈 네트워크로 설정합니다. 사진, 음악을 공유하기 위해 누른 후 다음 화면이 표시 될 수 있습니다. 취소를 클릭하면됩니다. 메인 화면에서 홈 네트워크는 계속 활성화됩니다.

  3. 컴퓨터의 IP가 필요합니다. localhost 또는 기타 별칭이 작동하지 않습니다. 컴퓨터의 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 케이블을 통해 휴대 전화를 컴퓨터에 연결하고 표시되는지 확인합니다 (배시 명령에 표시되어야합니다 adb devices.
  2. 컴퓨터의 Chrome 브라우저에서 chrome : // inspect / # devices 를 열고 '포트 전달'버튼을 클릭 한 다음 '포트 전달 사용'을 선택하고 휴대 전화에서 액세스 할 컴퓨터의 포트를 추가합니다 ( 자세한 안내 여기 ). chrome : // inspect / # devices를 실행하는 탭을 계속 열어 두어야합니다.
  3. 휴대 전화의 브라우저에서 localhost : [port_number]로 이동하면 컴퓨터에서 실행중인 항목이 표시됩니다.

이것은 Windows 및 Ubuntu Linux에서 작동하며 Mac에서도 작동합니다.


0

내가 직면 한 문제는 아마도 누군가에게 도움이 될 것입니다. 내 PC와 안드로이드 장치가 동일한 WiFi 네트워크에 연결되어 있고 포트 8080이 열린 PC의 IPV4 주소를 통해 연결된 안드로이드 장치가 방화벽을 통과하는 곳에서 오랫동안 작업했습니다.

ONE DAY : 다른 화면에서 UI를 디버깅하기 위해 Genymotion 에뮬레이터를 설치했습니다. Genymotion / Virtualbox 네트워크 구성 덕분에 내 WiFi 어댑터가 망가졌습니다.

수정 사항은 WiFi 네트워크 어댑터에서 IPV4 / TCP 설정을 재구성하는 것입니다.

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.