컴퓨터/C

C accept()

sayyesdoit 2022. 11. 5. 13:36

I. syntax

#include <sys/socket.h>

int accept(int sock, struct sockaddr* addr, socklen_t* addrlen);

II. return

성공 시 생성된 소켓의 파일 디스크립터, 실패 시 -1 반환

III. parameters

1. int sock

서버 소켓의 파일 디스크립터 전달.

2. struct sockaddr* addr

연결요청 한 클라이언트의 주소정보를 담을 변수(clnt_adr)의 주소 값 전달, 함수호출이 완료되면 인자로 전달된 주소의 변수에는 클라이언트의 주소정보가 채워진다.

(struct sockaddr*)&clnt_adr

3. socklen_t* addrlen

두 번째 매개변수 addr에 전달된 주소의 변수 크기를 바이트 단위로 전달, 단 크기정보를 변수에 저장한 다음에 변수의 주소 값을 전달한다. 그리고 함수호출이 완료되면 크기정보로 채워져 있던 변수에는 클라이언트의 주소정보 길이가 바이트 단위로 계산되어 채워진다.

socklent_t clnt_adr_sz;
clnt_adr_sz=sizeof(clnt_adr); //&clnt_adr_sz 사용