본문 바로가기
개발/Flutter

[Flutter] dio 사용중 에러 Connection refused (OS Error: Connection refused, errno = 111), address = 10.0.2.2, port = 52314

by 문둘기 2022. 12. 15.

문제

지금 API 서버로 Nest.JS를 로컬에서 실행하고있다. port는 3000이다
앱 테스트를 위해 안드로이드 실기기를 맥북에 연결후 빌드해서 api를 사용하려는데 아래 에러가 발생했다

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioError [DioErrorType.other]: SocketException: Connection refused (OS Error: Connection refused, errno = 111), address = 10.0.2.2, port = 52314


나는 지금 현재 기기가 ios인지 아닌지 판단해서 http://$ip/auth/login 이런 api를 호출하려고했다.

$ip는 ios 시뮬레이터라면 127.0.0.1:3000
안드로이드 에뮬레이터는 10.0.2.2:3000 를 넣어주게해놨다
하지만 실제 기기를 사용하고있기때문에 로컬 nest 서버에 접속하는게 실패하는 상황인것으로 보인다.

해결

  1. 서버를 로컬에서 돌리지말고 서버를 띄운다음 그 서버 ip를 쓰거나
  2. 내 ip주소를 찾은다음 그걸로 바꿔주거나

일단 지금은 간단한 테스트중이라 1번은 좀 곤란했고 2번으로 해결했다

이 글 에서 찾은 해결책인데

ifconfig 명령어로 내 ip주소를 얻은다음 넣어줬다

위 이미지를 예로들면 $ip부분을 제거하고 이런식으로함

$ip = '192.168.0.109:3000';

'http://$ip/auth/login' << api 사용

이렇게하니까 정상작동한다.