파일 디스크립터란 시스템(운영체제)가 파일에 할당해준 정수값을 의미한다. 이는 꼭 파일만이 아니라 소켓에도 해당하는데, 예를 들어 소켓을 생성하는 socket 함수 또는 연결을 수락하는 accept 함수의 반환값 또한 파일 디스크립터값인 정수이며, 이는 포트번호에 해당
서버와 클라이언트가 통신하는데에 필요한 정보는 IP 주소와 port번호이다. 즉, 소켓에는 두 주소가 할당되어야한다.IP주소로 컴퓨터를 특정, Port번호로 프로세스를 특정할 수 있다.가장 간단한 예시로, 클라이언트에게 "서버와 연결되었습니다." 문자열을 전송하는 서버
지난 글에서 serv_addr 구조체에 값을 채워넣음으로써 소켓의 ip주소와 port번호를 지정해주었다.다음으로, 실제 소켓의 할당에 해당하는 bind함수, 클라이언트의 연결요청을 기다리는 listen함수, 연결을 허용하는 accept함수에 대해 알아보려고 한다.lis
소켓 프로그래밍을 할 때, 소켓의 특성을 조회하거나 설정할 수 있는데 바로 옵션변경을 통해 가능하다.소켓의 옵션은 계층별로 분류되며,ip 계층에 관련된 IPPROTO_IP 레벨 tcp계층에 관련된 IPPROTO_TCP 레벨 가장 일반적인 설정에 관련된 SOL_SOCKE
서버에서는 socket() 함수로 소켓 디스크립터를 할당받은 후,bind() -> listen() -> accept() 시스템콜을 차례로 호출해 클라이언트와 연결을 맺을 수 있음을 확인했다.반대로, 클라이언트에서는 대기중인 서버에 연결 요청을 함으로써 서버-클라이언트
클라이언트에서 서버로 특정 메세지를 보내면 이를 그대로 echo 시켜주는 echo server를 구현해보려고 한다.이 때, 서버가 여러 클라이언트에 대해 서비스를 제공할 수 있도록 하려면 어떻게 해야할까?accept() 함수의 경우 한 번에 하나의 클라이언트와 연결을