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λ²μ§Έ μΈμμ κΈΈμ΄