프로그래밍/의문
boost asio 사용 시 win32 버전을 지정하지 않으면 io_context::run이 빠져나가는 현상
제페
2019. 4. 14. 04:09
반응형
asio를 이용해 tcp 서버를 만들었는데 async_accept 이벤트가 등록되어있음에도 io_context::run을 벗어났다.
_WIN32_WINNT에 타겟 윈도우 버전을 지정하니 벗어나는 현상이 없어졌다.(_WIN32_WINNT=_WIN32_WINNT_WIN10)
추가적인 확인 필요
발생한 상황
서버는 최대 세션이 10개 받아지도록 되어있다. 세션이 끊어지면 소켓을 닫고 닫힌 소켓에 async_accept를 걸도록 되어있다.
클라이언트는 100개의 세션을 동시에 연결하고 동시에 연결을 끊는다.
서버는 다시 async_accept를 걸었다는 로그가 찍혀있지만 아무 에러 없이 io_context::run이 빠져나갔다.
다음과 같은 상황에선 발생하지 않았다.
위 상황에서 서버는 최대 세션이 110개 받아지도록만 설정한다.
클라이언트는 100개의 세션을 동시에 연결하고 동시에 연결을 끊는다.
동시 연결 + 연결 끊기를 여러번 반복하여도 끊기지 않는다.
반응형