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 |