[Android Studio] 애뮬레이터의 로컬 주소에 대하여

2024. 7. 1. 17:37·Error

저번 학기 요새 아주 장안의 화제(사실 그냥 있는거 쓰는게 더 낫지만)인 AI 비서를 스마트폰에 온디바이스 형식으로 개발해보고자, Gemini API를 사용하여 나만의 인공지능 어플을 개발했었다. 

개발 도중에 아주 흥미로운 주제를 찾을 수 있어서, 이렇게 짧게나마 기록해보고자 한다.

서버를 로컬로 구현한 python 코드

위 코드는 http method (get,post,delete,put) 중에서 get 메서드를 처리하여 uvicorn 패키지를 통해 로컬 호스트 서버를 구현하는 코드의 일부분이다.

이때 우리에게 보이는 127.0.0.1 주소는 우리가 흔히 사용하는 내 컴퓨터의 로컬 주소이다.

위 코드가 정상적으로 실행 된다면 위와 같이 정상적으로 서버가 열린 모습을 확인 할 수 있는데,  이 서버를 이용하기 위해 안드로이드 스튜디오의 애뮬레이터와 연동하는 과정에서 상당히 흥미로운 주제가 발생했다.

 

Android Studio의 dart 코드

내가 구현한 서버에 연결하기 위해 안드로이드 스튜디오에서 위와 같은 코드를 사용했는데, 자세히 보면 뭔가가 이상하다

"주인장.. 주소가 뭐 저래..? 아까 로컬로 열었다며.."

위와 같은 의문이 든다면 당신이 맞다..

보는 것과 같이 8000번째 포트는 잘 입력하였으나, 10.0.2.2 라는 난생 첨보는 주소가 나타난다.

이 첨보는 주소는 무엇이고, 왜 이렇게 사용 해야하는 걸까?

먼저 로컬 호스트 주소에 대해 간단하게 이해하고 넘어가자

127.0.0.1 (로컬호스트):

127.0.0.1은 로컬호스트 IP 주소로, 네트워크 인터페이스가 아닌 현재 사용 중인 컴퓨터(서버)를 가리킨다. 이때 주소는 외부에서 접근할 수 없으며, 해당 컴퓨터 내에서만 유효하다.

따라서, 파이썬 서버를 127.0.0.1에서 실행하면, 해당 서버는 개발 중인 컴퓨터 내에서만 접근 가능하다.

다음은 에뮬레이터의 주소를 살펴보자

10.0.2.2(애뮬레이터 주소):

  • 안드로이드 에뮬레이터에서 10.0.2.2는 에뮬레이터와 호스트 머신(개발 컴퓨터) 사이에서의 특별한 IP 주소로, 에뮬레이터가 로컬호스트(127.0.0.1)로 접근하는 대신 이 주소를 사용하여 호스트 컴퓨터의 로컬 서버에 접근하게 된다.
  • 안드로이드 에뮬레이터는 자체 네트워크 환경을 갖추고 있으며, 에뮬레이터 내에서 127.0.0.1을 사용하면 에뮬레이터 자체의 로컬호스트를 가리키게 된다. 따라서, 호스트 머신의 로컬 서버에 접근하기 위해 특별히 설정된 10.0.2.2를 사용해야 한다!

 

아 이제 알겠다!

아! 애뮬레이터도 하나의 네트워크로써 로컬 주소인 127.0.0.1을 사용하면 애뮬레이터 자체의 로컬 호스트를 가르키는구나! 라고 또 하나 개발하면서 깨닫게 되었다..

요약하자면:

  • 서버의 127.0.0.1: 개발 컴퓨터 내에서 실행되는 로컬 서버.
  • 에뮬레이터의 10.0.2.2: 에뮬레이터가 개발 컴퓨터의 로컬 서버에 접근하기 위해 사용하는 특별한 IP 주소.

정도로 요약할 수 있겠다.

 

항상 개발할 때 왜 이 문제가 발생하며 어떤 식으로 해결해야하고, 왜 그렇게 해결해야하는지에 대한 근본적인 원인을 알고 사용하는 내가 되자! 아자 아자 화이자!

'Error' 카테고리의 다른 글

[Spring] 드디어 당한 String 오타 에러  (0) 2025.05.31
[Junit] fail() 메서드 reference to fail is ambiguous 에러  (0) 2025.05.05
'Error' 카테고리의 다른 글
  • [Spring] 드디어 당한 String 오타 에러
  • [Junit] fail() 메서드 reference to fail is ambiguous 에러
xub2
xub2
//given //when //then
  • xub2
    xublog
    xub2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (115)
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (3)
      • Java (22)
        • Java (19)
        • Collections (3)
      • Spring (4)
        • Core (3)
        • MVC (1)
      • DataBase (6)
        • SQL (2)
        • Database Modeling (4)
      • Computer Science (28)
        • Network (22)
        • Software Engineering (3)
        • Operating System (3)
      • Algorithm (14)
        • CT (12)
      • Project (9)
        • Web (0)
        • iOS (8)
        • Python (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xub2
[Android Studio] 애뮬레이터의 로컬 주소에 대하여
상단으로

티스토리툴바