서버에서 주소 바인딩 시 이미 사용중인지 확인할 수 있는 방법이 있을까요?
조회수 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상태가 아니면 튕겨줘야 하지 않나요??
제가 원하는 것은 실수로 같은 주소와 포트로 서버를 띄웠을 시 튕겨주고 싶은 것인데 혹시 방법이 있을까요??
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력