본문 바로가기

개인공부/윤성우의 열혈 TCP&IP 소켓 프로그래밍24

Chapter 12 - IO 멀티플렉싱(Multiplexing) 12-1 : IO 멀티플렉싱 기반의 서버 프로세스의 생성에는 많은 연산 및 메모리가 필요함 또한 별도의 메모리를 점유하기 때문에 상호간의 데이터 전송에 불편 멀티플렉싱 : 하나의 통신채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술 서버에 멀티플렉싱 기술을 도입하여 필요한 프로세스의 수를 줄일 수 있음 12-2 : select 함수의 이해와 서버의 구현 select() 함수를 사용하여 멀티플렉싱 서버를 구현할 수 있음 여러개의 파일 디스크립터를 동시에 관찰 가능 정확히는 소켓의 관찰항목인 이벤트(event)를 관찰 수신한 데이터를 지니고 있는 소켓의 존재여부 블로킹되지 않고 데이터의 전송이 가능한 소켓 탐색 예외상황이 발생한 소켓 탐색 파일 디스크립터 설정 관찰하고자 하는 파일 디스크립터들을 이벤.. 2023. 2. 24.
Chapter 11 - 프로세스간 통신(Inter Process Communication) 11-1 : 프로세스간 통신의 기본 개념 프로세스들은 서로 별개의 메모리 공간을 점유하기 때문에 프로세스간 통신은 별도로 마련된 방법을 통해서만 이뤄질 수 있음 두 프로세스간 파이프(Pipe)를 생성하여 통신 가능 파이프는 소켓과 마찬가지로 운영체제에 속하는 자원으로 fork() 함수로 복사되지 않음 #include int pipe(int filedes[2]); // 성공시 0, 실패시 -1 반환 배열에 담기는 두개의 파일 디스크립터는 각각 파이프의 입구와 출구로 사용 fork() 함수로 입구 또는 출구에 해당하는 파일 디스크립터를 자식 프로세스에 전달 단, 이 때 파이프가 복사된 것이 아닌 파이프의 입출력에 사용되는 파일 디스크립터가 복사된 것에 유의 pipe() 함수 사용 예제 // pipe1.cpp.. 2023. 2. 24.
Chapter 10 - 멀티프로세스 기반의 서버구현 10-1 : 프로세스의 이해와 활용 다중접속 서버의 구현 모델 멀티프로세스 기반 서버 : 다수의 프로세스를 생성하는 방식으로 서비스 제공 멀티플렉싱 기반 서버 : 입출력 대상을 묶어서 관리하는 방식으로 서비스 제공 멀티쓰레딩 기반 서버 : 클라이언트의 수만큼 쓰레드를 생성하는 방식으로 서비스 제공 Windows에서는 멀티프로세스 기반의 서버 구현을 지원하지 않음 프로세스(Process) : 메모리 공간을 차지한 상태에서 실행중인 프로그램 모든 프로세스는 운영체제로부터 프로세스 ID를 부여받음 1번은 운영체제가 시작되자마자 실행되는 프로세스에 할당 따라서 프로세스 ID는 2 이상의 정수 형태를 띔 ps 명령어로 PID를 확인할 수 있음 프로세스의 생성에는 fork() 함수를 사용 #include pid_t.. 2023. 2. 24.
Chapter 09 - 소켓의 다양한 옵션 09-1 : 소켓의 옵션과 입출력 버퍼의 크기 소켓의 옵션은 계층별로 존재 SOL_SOCKET - 소켓에 대한 일반적인 옵션들 IPPROTO_IP - IP 프로토콜에 관련된 사항 IPPROTO_TCP - TCP 프로토콜에 관련된 사항 대부분의 옵션은 설정상태의 참조(Get) 및 변경(Set)이 가능 #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sock, int level, int optname, const void *optval, socklent_t optlen); // 성공시 0, 실패시 -1 반환 getsockopt() 함수를 사용한 예시 // so.. 2023. 2. 24.