LISTEN() 함수바로 들어오지 마시고 대기표 뽑고 기다리세요클라이언트 요청을 받기 위한 수신 대기 Queue 생성- 클라이언트 요청을 바로 받지 않고 수신 대기 큐에 PUSH- 서버가 클라이언트와 연결될 수 있는지 체크 후 연결하기 위해 바로 연결 X- 대기 큐를 생성하기 전에 클라언트가 연결 요청을 할 경우 오류 발생 #include int listen(int sockfd, int backlog) 1) sockfd주소 정보를 할당할 소켓의 파일 디스크립터※ 파일 디스크립터: Linux가 파일을 구분하기 위해 배정한 번호 2) backlog대기 큐의 크기접속 가능한 클라이언트의 개수( = 연결 큐의 길이 ) TCP는 1:1밖에 안되는데 한 서버에 여러 클라이언트가 연결 요청을 하는 상황 발생연결 큐가..
소켓에 주소 설정 - 소켓에 IP Adress / Port 번호 정보 연결 #include #include int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) 매개 변수 1) sockfd 주소 정보를 할당할 소켓의 파일 디스크립터 ※ 파일 디스크립터: Linux가 파일을 구분하기 위해 배정한 번호 2) addr 프로토콜 버전(IPv4/IPv6), IP 주소, Port 번호 정보를 담고 있는 sockaddr 구조체 포인터 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_por..
소켓 생성 #include int socket(int domain, int type, int protocol); 매개변수 1) domain 인터넷 프로토콜 버전 선택 - AF_INET(IPv4) / AF_INET6(IPv6) *인터넷 프로토콜: 데이터 패킷이 네트워크를 통해 이동하고 올바르게 도착하게 하기 위한 규칙 프로토콜에 대해 알아보기 2) type 프로토콜의 동작 방식 선택 - SOCK_STREAM(TCP 기반 통신) / SOCK_DGRAM(UDP 기반 통신) SOCK_STREAM, SOCK_DGRAM에 대해 알아보기 3) protocol 필수 항목 X - 입력을 원치 않을 경우 0 type 선택으로 이미 프로토콜을 알기 때문에 명시적인 용도로 지정 프로토콜 정보 지정 - IPPROTO_TCP(T..