본문 바로가기

컴퓨터/C

C listen() I. syntax #include int listen(int sock, int backlog); II. return 성공 시 0, 실패 시 -1 반환 III. parameters 1. int sock 연결요청 대기상태에 두고자 하는 소켓의 파일 디스크립터 전달, 이 함수의 인자로 전달된 디스크립터의 소켓이 서버 소켓(리스닝 소켓)이 된다. 2. int backlog 연결요청 대기 큐(Queue)의 크기정보 전달, 5가 전달되면 큐의 크기가 5가 되어 클라이언트의 연결요청을 5개까지 대기시킬 수 있다. 웹 서버와 같이 잦은 연결요청을 받는 서버의 경우에는 최소 15 이상을 전달해야 한다.
C 네트워크 주소 정보의 표현 I. sockaddr_in struct sockaddr_in { sa_family_t sin_family; //주소체계(Address Family) unit16_t sin_port; //16비트 TCP/UDP PORT 번호 struct in_addr sin_addr; //32비트 IP주소. 아래 구조체 참고 char sin_zero[8]; //사용되지 않음 }; struct in_addr { in_addr_t s_addr; //32비트 IPv4 인터넷 주소 }; 1. sin_family 주소체계(Address Family) 의미 AF_INET IPv4 인터넷 프로토콜에 적용하는 주소체계 AF_INET6 IPv6 인터넷 프로토콜에 적용하는 주소체계 AF_LOCAL 로컬 통신을 위한 유닉스 프로토콜의 주소체..
C bind() I. syntax #include int bind(int sockfd, struct sockaddr* myaddr, socklen_t addrlen); II. return 성공 시 0, 실패 시 -1 반환 III. parameters 1. int sockfd 주소정보를(IP와 PORT를) 할당할 소켓의 파일 디스크립터 2. struct sockaddr* myaddr 할당하고자 하는 주소정보를 지니는 구조체 변수의 주소 값. 서버의 주소정보 표현을 위해 만든 sockaddr_in 구조체(serv_adr)를 사용한다. (struct sockaddr*)&serv_adr 3. socklen_t addrlen 두 번째 인자로 전달된 구조체 변수의 길이정보 sizeof(serv_adr)
C socket() I. syntax #include #include int socket(int domain, int type, int protocol); II. return 성공 시 파일 디스크립터, 실패시 -1 반환 III. parameters 1. int domain 이름 프로토콜 체계(Protocol Family) PF_INET IPv4 인터넷 프로토콜 체계 PF_INET6 IPv6 인터넷 프로토콜 체계 PF_LOCAL 로컬 통신을 위한 UNIX 프로토콜 체계 PF_PACKET Low Level 소켓을 위한 프로토콜 체계 PF_IPX IPX 노벨 프로토콜 체계 2. int type 타입 의미, 특징 SOCK_STREAM 연결지향형 소켓(tcp) 중간에 데이터가 소멸되지 않고 목적지로 전송된다. 전송 순서대로 데이터가..
C soket 소켓 생성 과정 I. server 1단계. 소켓 생성. socket 함수 호출 비유하자면, 전화기의 장만 단계이다. #include int socket(int domain, int type, int protocol); 성공 시 파일 디스크립터, 실패시 -1 반환 2단계. IP주소와 PORT번호 할당. bind 함수 호출 비유하자면, 전화번호의 부여 단계이다. #include int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); 성공 시 0, 실패 시 -1 반환 3단계. 연결요청 가능상태로 변경. listen 함수 호출 비유하자면, 전화기의 케이블 연결 단계이다. #include int listen(int sockfd, int backlog); 성공 시 0,..