비동기 함수 정리
::AcceptEx docs.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-acceptex
AcceptEx function (mswsock.h) - Win32 apps
Accepts a new connection, returns the local and remote address, and receives the first block of data sent by the client application. Note This function is a Microsoft-specific extension to the Windows Sockets specification. .
docs.microsoft.com
함수원형
BOOL AcceptEx(
SOCKET sListenSocket,
SOCKET sAcceptSocket,
PVOID lpOutputBuffer,
DWORD dwReceiveDataLength,
DWORD dwLocalAddressLength,
DWORD dwRemoteAddressLength,
LPDWORD lpdwBytesReceived,
LPOVERLAPPED lpOverlapped
);
sListenSocket: 서버의 listen 설정된 소켓.
sAcceptSocket: 클라이언트로부터 들어오는 connect를 accept할 소켓. (이 소켓은 바인드와 connect가 안되어있어야함)
lpOutputBuffer: 연결에서 처음으로 전송될 데이터 블록, 서버의 로컬 주소 및 클라이언트 원격 주소를 받을 버퍼의 포인터 주소
dwReceiveDataLength: lpOutputBuffer의 바이트 수. 서버의 로컬 주소와 클라이언트 원격 주소 크기는 포함되지 않아야 하며, 0으로 설정시 연결을 수락해도 수신 작업이 실행되지 않고 AcceptEx는 연결이 도착하자마자 완료됨
dwLocalAddressLength: 로컬 주소용 바이트 수. 이 값은 사용중인 전송 프로토콜의 최대 주소 길이보다 16바이트 이상 커야함
dwRemoteAddressLength: 원격 주소용 바이트 수. 이 값은 사용중인 전송 프로토콜의 최대 주소 길이보다 16바이트 이상 커야함
lpdwBytesReceived: 받은 바이트 수를 받는 DWORD 변수의 포인터 주소. (동기적으로 완료되는 경우에만 설정되며, ERROR_IO_PENDING을 반환하고 나중에 완료되면 그 때 읽은 바이트 수를 가져와야함)
lpOverlapped: 요청을 처리하는데 사용되는 Overlapped 구조체 포인터. NULL 불가