CμΈμ΄λ₯Ό κΈ°λ°μΌλ‘ 리λ μ€ μλ²μμ μμΌ μΈν°νμ΄μ€λ₯Ό νμ©ν μμ£Ό μμ μΉ μλ²λ₯Ό ꡬνν΄λ³΄κ³ μ νλ€.
- λ€νΈμν¬μμμ λμνλ νλ‘κ·Έλ¨ κ° ν΅μ μ End-Point
- νλ‘κ·Έλ¨μ΄ λ€νΈμν¬μμ λ°μ΄ν°λ₯Ό μ‘μμ ν μ μλλ‘ μ°κ²°ν΄μ£Όλ λꡬλ‘μ¨ μΈν°νμ΄μ€ μν μ νλ€
리λ μ€μμ μμΌμ νμΌ ννλ‘ λ€λ£¨μ΄μ§λ©° νλ‘μΈμ€λ μ΄ μμΌμ μ¬μ©ν λ νμΌλμ€ν¬λ¦½ν°λ₯Ό ν΅ν΄ μ¬μ©νλ€.
νμΌ λμ€ν¬λ¦½ν°λ?
File Descriptor
- μμ€ν μΌλ‘λΆν° ν λΉ λ°μ νμΌμ λννλ 0μ΄ μλ μ μ κ°
- μ λμ€ μμ€ν μμ λͺ¨λ μ₯μΉλ€μ νμΌλ‘ κ΄λ¦¬, λ΄μΈλΆ λͺ¨λ μ₯μΉλ νμΌλ‘ μ·¨κΈνλ€.- μΌλ° νμΌ, λλ ν 리, Socket, PIPEλ± νλ‘μΈμ€κ° μ΄λ¬ν νμΌλ€μ μ κ·Όν λ File DescriptorλΌλ κ°λ μ μ΄μ©νλ€.

socket
- socket() ν¨μλ₯Ό μ΄μ©νμ¬ socketμ μμ±νκ³ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ¦¬ν΄ λ°λλ€.
#include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);
parameter
int domain: μ΄λ€ μμμμ ν΅μ ν κ²μΈμ§ (IPv4 or IPv6 or ...)int type: μ΄λ€ μλΉμ€ νμ
μ μμΌ (TCP or UDP or ...)int protocol: μμΌμμ μ¬μ©ν νλ‘ν μ½ (TCP or UDP / typeμμ 미리 μ ν΄μ§ κ²½μ° 0)return value
-1: μμΌ μμ± μ€ν¨3 μ΄μμ κ°: μμΌ μμ± μ±κ³΅μ μμΌμ κ°λ¦¬ν€λ μμΌ λμ€ν¬λ¦½ν°λ₯Ό λ°νbind
- socket() ν¨μλ₯Ό ν΅ν΄ μμ±λ μμΌμ μλ²μ μ 보λ₯Ό λ¬Άμ΄μ£Όλ ν¨μ (IP μ£Όμμ μμΌ λμ€ν¬λ¦½ν°λ₯Ό μ°κ²° μμΌμ€λ€.)
#include <sys/socket.h> int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
parameter
int sockfd: μμ±λ μμΌμ νμΌλμ€ν¬λ¦½ν°struct sockaddr *myaddr: μλ²μ IP μ£Όμsocklen_t addrlen: IP μ£Όμ κΈΈμ΄return value
-1: μ€ν¨0: μ±κ³΅listen
- μΈλΆμμ μμ²μ΄ λ€μ΄μ¬ λ μλ½ν μ μλ λκΈ°μνμ λ€μ΄κ°λ ν¨μ
#include <sys/socket.h> int listen(int sockfd, int backlog);
parameter
int sockfd: μμ±λ μμΌμ νμΌλμ€ν¬λ¦½ν°int backlog: μ°κ²° λκΈ°μ΄μ ν¬κΈ°return value
-1: μ€ν¨0: μ±κ³΅accept
- ν΄λΌμ΄μΈνΈλ‘λΆν° μμ²μ΄ λ€μ΄μμ λ μλ²μ μ°κ²°μμΌμ£Όλ ν¨μ
#include <sys/socket.h> int listen(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
parameter
int sockfd: μμ±λ μμΌμ νμΌλμ€ν¬λ¦½ν°struct sockaddr *addr: ν΄λΌμ΄μΈνΈ μ£Όμ μ 보socklen_t *addrlen: 2λ²μ§Έ μΈμμ κΈΈμ΄