Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

accept

accept함수는 연결 대기열에의 가장 앞에 있는 (가장 먼저 들어온) 클라이언트 연결 요청을 가져와서 "연결 소켓"을 만든다.

사용 법

SOCKET accept(
  __in     SOCKET s,
  __out    struct sockaddr *addr,
  __inout  int *addrlen
);

매개 변수

  1. s
listen(:4100)함수의 매개 변수로 클라이언트의 연결을 기다리는 소켓 기술자. 클라이언트의 요청을 듣는다고 하여 흔히 '듣기 소켓'이라고 한다.
  1. addr
클라이언트 연결을 가져오면, 이 매개 변수에 클라이언트 주소 정보를 복사해서 넘긴다. 옵션으로 생략할 수 있다.
  1. addrlen
두번째 매개 변수 자료구조의 크기. 옵션으로 생략할 수 있다.

반환 값

실패하면 INVALID_SOCKET를 반환한다. 성공하면 소켓 지정 번호인 SOCKET형의 값을 반환한다. 이 소켓 지정 번호는 클라이언트 연결 소켓을 가리킨다. 이 소켓을 이용해서 클라이언트와 데이터 통신을 할 수 있다. 클라이언트와 연결된 소켓이라고 해서 흔히 '연결 소켓' 이라고 부른다.

에러 값은 WASGetLastError(:4200)함수의 반환 값으로 확인할 수 있다.

에러 코드 설명
WSANOTINITIALISED WSAStartup()함수가 성공적으로 실행되지 않은 상황에서 함수를 호출했음
WSAECONNRESET 연결이 원격 호스트에 의해 재설정되었음.
WSAEFAULT addrlen 매개 변수가 addr에 비해 너무 작다.
WSAEINTR WSACancelBlockingCall()에 의해 블록화 호출이 취소
WSAEINVAL 바인딩 실패. 이미 bind된 소켓에 바인드하거나 주소체계가 일관적이지 않을 때
WSAEINPROGRESS 블록화 함수가 진행되는 동안 부적절한 윈속 API함수가 호출.
WSAEMFILE 너무 많은 파일이 열려있음
WSAENETDOWN 네트워크 서브 시스템에 문제가 있음. 네트워크 접속 끊김등.
WSAENOBUFS 남아있는 버퍼공간이 없어서 소켓을 사용할 수 없음
WSAENOTSOCK 잘못된 소켓기술자를 사용했음
WSAEOPNOTSUPP 소켓이 지원하지 않는 명령을 사용했음. listen()함수를 데이터그램 통신 (SO_DGRAM)에서 호출하는 등
WSAEWOULDBLOCK 비봉쇄 모드에 있는 소켓에서, 연결이 없을 때

참고

예제