[GPG 4 글 6.2] IOCP AcceptEx함수 관련한 질문 입니다.

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

비회원

IOCP AcceptEx함수 관련한 질문 입니다.

Post by 비회원 »

제가 AcceptEx를 통해서 비동기로 100여개 정도의 비동기 Accept를 미리 하였습니다.

그런데 어디서 잘못된 것인지

클라이언트 하나가 접속하면 Accept가 잘되는데 2번째 접속하면 Accept메세지를 안 받다가

1번째 클라이언트 접속이 끊기면 그제서야 2번째 접속이 성공합니다.

어느 부분을 의심해 보는 게 좋을까요?

고수님들의 답변 부탁드립니다.
비회원

음. 다음 부분을 집중적으로 살펴보세요.

Post by 비회원 »

AcceptEx 부분의 중요부분 소스
클라이언트 접속시 처리해주는부분,
클라이언트 접속닫기시 처리해주는부분.

뭐가 문제일까요? 보이지 않아서 모르겠네요.
비회원

생성한 socket 에 setsockopt로 SO_REUSEADDR을 지정하지 않으신 게 아닌지...

Post by 비회원 »

socket 생성 후에 Accept용 소켓은 반복적으로 재사용 가능한 소켓임을 명시적으로 지정하기 위해 아래와 같은 식으로 setsockopt 함수를 호출해야 합니다.

Code: Select all

char i = 1;
if( setsockopt( m_socket, SOL_SOCKET | IPPROTO_TCP, SO_REUSEADDR, &i, sizeof( i ) ) )
{
    // 오류 발생. WSAGetLastError / GetLastError로 오류 코드 체크 후 오류 처리.
}
이걸 하셨는데도 그렇다면 위에 분 답변처럼 각 이벤트에 대한 처리 시 소켓에 대한 핸들링이 제대로 되고 있는지를 꼼꼼히 확인해봐야 할 것 같네요.
Post Reply