서버에서 주소 바인딩 시 이미 사용중인지 확인할 수 있는 방법이 있을까요?

조회수 532회

안녕하세요. 서버 쪽 공부하고 있는 신입입니다 ㅜ

하나의 장치에서 여러개의 서버를 띄우려고 합니다

boost::system::error_code ec;

a.open(tcp::v4(), ec);

a.set_option(tcp::acceptor::reuse_address(true), ec);

a.bind({ tcp::v4(), port }, ec);

if (ec != 0) return false;

위와 같은 코드로 테스트를 해보고 있는데 해당 코드를 두번 실행했을 경우에는 두번째 프로세서에서 bind 할 경우 튕겨내지 않고 같이 bind해서 listening 상태로 변경되더라구요,,

제가 알기로는 SO_REUSEADDR 옵션이 서버가 죽고 바로 재시작 시 바인딩을 정상적으로 해주기 위해서 사용하는 걸로 알고있습니다. 그래서 위 옵션을 사용하였는데 이 옵션을 사용해도 해당 주소가 TIME_WAIT상태가 아니면 튕겨줘야 하지 않나요??

이미지

제가 원하는 것은 실수로 같은 주소와 포트로 서버를 띄웠을 시 튕겨주고 싶은 것인데 혹시 방법이 있을까요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)