TCP 서버의 함수호출 순서.

소켓프로그래밍 짜다가 너무 헷갈려서 한번올려본다. 원래는 이런거 올릴생각없었는데 ㅠㅠ

 

함수하나하나 살펴보자.

 

#include<sys/socket.h>에 정의되어 있다.

 

int socket(int domain, int type, int protocol);    //성공시 파일 디스크립터,실패시 -1반환.

 

domain -> 소켓이 사용할 프로토콜 체계(Protocol Family)정보 전달.

type -> 소켓의 데이터 전송방식에 대한 정보 전달.

protocol -> 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달.

 

int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);    //성공시 0,실패시 -1반환.

 

sockfd -> 주소정보를 할당할 소켓의 파일 디스크립터.

myaddr -> 할당하고자 하는 주소정보를 지니는 구조체 변수의 주소 값.

addrlen -> 두 번째 인자로 전달된 구조체 변수의 길이정보.

 

int accept(int sock, struct sockaddr * addr, socklen_t * addrlen);    //성공시 생성된 소켓의 파일 디스크립터, 실패시 -1 반환.

 

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

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

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

 

int listen(int sockfd, int backlog);    //성공시 0, 실패시 -1반환

 

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

backlog -> 연결요청대기큐 허용 갯수 설정하는 정수가 들어감.

 

 

 

'Programming > Socket' 카테고리의 다른 글

클라이언트 IP 가져오기  (0) 2012.05.14
멀티프로세스 소스  (0) 2012.05.10
멀티프로세스 서버  (0) 2012.05.08
소켓의 옵션  (0) 2012.05.07
Socket 함수 구조체  (0) 2012.04.24

+ Recent posts