미리 보고 오면 좋은 함수
listen() 함수란?
서버 소켓을 "연결 요청을 받을 수 있는 상태"로 바꿔주는 함수
클라이언트의 연결 요청을 기다리는 "대기 상태(passive 상태)"로 만드는 역할
Why Used?
socket()과 bind()를 통해 소켓 생성 후 IP + PORT 연결을 완료하고 나면 연결 요청을 받을 준비를 해야한다.
함수 원형
int listen(int sockfd, int backlog);
| 매개변수 | 설명 |
| sockfd | socket()으로 생성한 소켓 파일 디스크립터 (bind 까지 완료된 상태) |
| backlog | 대기 큐(queue)의 크기 - 동시에 "기다릴 수 있는 연결 요청 개수" |
- 내부 동작
listen()을 호출하면 커널에서
ⓐ. 소켓 상태를 LISTEN 상태로 변경
ⓑ. 연결 요청 큐 생성
ⓒ. SYN 요청을 받을 준비 완료
TCP 기준
Client : SYN ->
Server : (listen 상태) -> 큐에 저장
return (반환값)
성공 : 0
실패 : -1
헤더 파일
#include <sys/socket.h>
사용 예시
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = INADDR_ANY;
bind(server_fd, (struct sockaddr*)&addr, sizeof(addr));
// 이 상태에서 서버는 연결 요청 받을 준비 완료
listen(server_fd, 5);
다음으로 공부해야 할 것
accept()
'정글캠프-WIL > C언어' 카테고리의 다른 글
| [C언어] - va_list 자료형 (1) | 2026.04.25 |
|---|---|
| [C언어] - connect() 함수 (0) | 2026.04.23 |
| [C언어] - accept() 함수 (0) | 2026.04.23 |
| [C언어] - bind() 함수 (0) | 2026.04.23 |
| [C언어] - socket() 함수 (0) | 2026.04.23 |