<aside> 💡 클라이언트와 서버는 소켓 식별자를 읽고 쓰면서 서로 통신한다.
</aside>
소켓이란
통신의 양 끝 점이다.
Berkeley Socket(BSD Socket)
소켓을 파일 식별자(file descriptor)의 형식으로 소켓을 다루는 API. Unix의 철학인 '모든 것은 파일이다'에서부터 출발했다. 네트워크를 포함한 모든 Unix I/O 디바이스들은 파일이므로, 소켓 역시 네트워크 상의 다른 프로세스와 통신하는 역할을 하는 파일로 볼 수 있다. Internet 소켓들은 대부분 이런 BSD 표준을 따른다.
<aside> 💡 소켓 주소 = IP주소 + 포트 번호
</aside>
generic 소켓 주소 구조체 sockaddr
connect, bind, accept 함수의 인자로 넣어주기 위한 16바이트 구조체이다.
예전에는 C언어에 (void *) 타입이 없어서 인자를 캐스팅해주기 위해 필요했다.
struct sockaddr {
uint16_t sa_family; /* Protocol family */
char sa_data[14]; /* Address data. */
};
generic 소켓 주소 구조체