본문 바로가기

정글캠프-WIL/C언어

[C언어] - socket() 함수


미리 보고 오면 좋은 함수


네트워크 프로그래밍을 처음 시작하면 가장 먼저 마주치는 함수가 바로 socket()
이 함수는 통신을 위한 "출입구"를 만드는 역할을 함
socket() 함수란?
네트워크 통신을 위한 소켓을 생성하는 함수
(소켓 : 프로세스 간 통신을 위한 파일 디스크립터)

Why Used?

프로그램이 네트워크를 통해 다른 프로그램과 통신하려면 "통로"가 필요하다.
그 통로를 만드는 것 -> socket()으로 만드는 소켓

함수 원형

int socket(int domain, int type, int protocol);

매개변수

- domain (주소 체계)

의미
AF_INET IPv4
AF_INET6 IPv6
AF_UNIX 로컬 통신
AF(Address Family)

- type (통신 방식)

의미
SOCK_STREAM TCP (연결지향, 신뢰성)
SOCK_DGRAM UDP (비연결, 빠름)

- protocol (프로토콜)

-> 보통은 0을 넣으면 자동으로 맞춰짐
0 → domain + type에 맞는 기본 프로토콜 사용

return(반환값)

성공 → 소켓 파일 디스크립터 (0 이상의 정수)
실패 → -1

헤더 파일

#include <sys/socket.h>

사용 예제

// IPv4 TCP 소켓 생성
int server_fd = socket(AF_INET, SOCK_STREAM, 0);

if (server_fd == -1) {
    perror("socket 생성 실패");
}

/**
 * socket()
 *
 * 실제로는 사용하기까지 한 단계가 부족한 상태
 * - IP 없음
 * - PORT 없음
 * - 누구랑 통신해야할지 모르는 상태
 */

다음으로 공부해야 할 것

[C언어] - bind() 함수

 

 

'정글캠프-WIL > C언어' 카테고리의 다른 글

[C언어] - va_list 자료형  (1) 2026.04.25
[C언어] - connect() 함수  (0) 2026.04.23
[C언어] - accept() 함수  (0) 2026.04.23
[C언어] - listen() 함수  (0) 2026.04.23
[C언어] - bind() 함수  (0) 2026.04.23