Android Studio에서 실제 Android 기기(삼성 핸드폰)를 연결하여 앱을 개발하는 중, Retrofit을 사용하여 Spring Boot 백엔드 서버(노트북 실행)와 통신하려고 했으나 아래와 같은 오류가 발생했다.
HTTP FAILED: java.net.SocketTimeoutException: failed to connect to /192.168.0.2 (port 8080) from /192.168.0.6 (port 37604) after 15000ms
노트북에서 Spring Boot 서버 실행 중 (IP: 192.168.0.2, 포트: 8080)
노트북과 Android 기기는 동일한 Wi-Fi 네트워크를 사용
Retrofit을 통해 API 요청 시 연결 실패
핸드폰 브라우저에서 http://192.168.0.2:8080/ 접속해도 "사이트에 연결할 수 없음" 오류 발생
문제: Windows 방화벽이 8080 포트에 대한 외부 접근을 차단하고 있을 가능성이 있음.
✅ 해결 방법 (PowerShell에서 8080 포트 허용):
New-NetFirewallRule -DisplayName "Allow 8080" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080
하지만 여전히 접속이 되지 않았다.
문제: Spring Boot 서버가 특정 IP가 아닌 localhost에만 바인딩되어 있을 가능성이 있음.
✅ 해결 방법 (application.yml 설정 변경):
server:
port: 8080
address: 0.0.0.0 # 모든 네트워크 인터페이스에서 접근 가능하게 변경
이후 서버를 재시작했지만, 여전히 Android 기기에서 접근이 되지 않았다.
문제:
노트북에서 핸드폰으로 ping이 가능했으나, 핸드폰에서 노트북으로 ping이 되지 않음 → 네트워크 문제 가능성
Windows 네트워크 프로필이 공용(Public)으로 설정되어 있을 경우, 외부 기기에서 접근이 차단될 수 있음.
✅ 해결 방법: 네트워크 프로필을 개인(Private)으로 변경
Windows 설정 열기 (Win + I)
네트워크 및 인터넷 → Wi-Fi → 현재 연결된 네트워크 클릭
네트워크 프로필 유형을 "개인(Private)"으로 변경
변경 후 다시 테스트
이후 핸드폰에서 노트북 서버로 요청이 정상적으로 이루어졌다! 🎉
앞서 PowerShell 명령어로 8080 포트를 열었는데, GUI에서 이미 수동으로 설정한 경우 중복될 가능성이 있음.
필요하다면 아래 명령어로 방화벽 규칙을 비활성화하거나 제거할 수 있다.
✅ 8080 포트 방화벽 규칙 삭제:
Remove-NetFirewallRule -DisplayName "Allow 8080"
✅ 8080 포트 방화벽 규칙 비활성화:
Set-NetFirewallRule -DisplayName "Allow 8080" -Enabled False
Android 기기에서 로컬 Spring Boot 서버와 연결이 안 될 때 확인해야 할 사항은 다음과 같다:
Windows 방화벽 설정 확인 (8080 포트 허용)
Spring Boot 서버 바인딩 확인 (0.0.0.0으로 변경)
네트워크 프로필 유형 확인 ("공용"이 아닌 "개인"으로 변경)
필요하면 방화벽 규칙 정리
이 과정을 거치면 동일한 네트워크를 사용하는 Android 기기에서 정상적으로 Retrofit을 통해 로컬 서버와 통신할 수 있다.