뉴암스테르담 2015. 8. 5. 21:42
[공유] [확장윈속 API] AcceptEx  시스템프로그래밍 

2013.04.11. 12:30  수정  삭제

복사http://blog.naver.com/pwk0810/40186881757

전용뷰어 보기

출처 내 아디 해킹한놈 지옥에나떨어져라 | 오아시스
원문 http://blog.naver.com/jjhoasis/110013912219

1. BOOL AcceptEx( 
  SOCKET sListenSocket,               // listen socket
  SOCKET sAcceptSocket,              // accept socket(생성되있어야함, not connect, 

                                                      not bind...)
  PVOID lpOutputBuffer,                   // client가 연결되자마자 수신되는 데이터 버퍼
  DWORD dwReceiveDataLength,     // lpOutputBuffer의 크기 : 로컬과 리모트 어드레스 크기

                                                     는 제외), 받을필요없으면 0
  DWORD dwLocalAddressLength,   // sAcceptSocket으로 연결되는 로컬어드레스의 크기

                                                     (사이즈 : 사용한 주소 구조체+16)
  DWORD dwRemoteAddressLength, // sAcceptSocket으로 연결되는 리모트어드레스의크기

                                                       (사이즈 : 사용한 주속 구조체+16)
  LPDWORD lpdwBytesReceived,     // 연결되자마자 받은 데이터의 크기
  LPOVERLAPPED lpOverlapped      // overlapped I/O를 수행할 WSAOVERLAPPED구조체

                                                       의 포인터, NULL이 될 수 없다
);

-> 서버가 클라이언트의 연결을 받아들일 때 비동기 호출로 동작하게 하여 다른 클라이언트의 연결을 즉시 받아들일 수 있도록 한다. 즉 accpet의 동작을 넌블럭킹 상태로 처리할 수 있게 해주는 함수이다. 순간적인 동시접속자가 많을 경우에 효율적으로 보인다

 

참고 : 정보문화사 NETWORK PROGRAMMING FOR MS WINDOWS II