본문 바로가기

책/TCPIP 소켓프로그래밍4

14.멀티캐스트&브로드캐스트 int send_sock; int time_lise =64; ..... send_sock=socket(PF_INET,SOCK_DGRAM,0); setsockopt(send_sock,IPPROTO_IPIP_MULTICAST_TTL,(void*)&time_live,sizeof(time_live)); 오늘은 멀티캐스트와 브로드캐스트에 대해 배워보겠습니다. 멀티캐스트와 브로드캐스트, 어디서 많이 들어본 거 같은 단어들입니다. 방송에서 많이 들은 거 같습니다. 여러분이 만약 방송사를 운영하고 있다면 1000명의 클라이언트가 서비스 요청을 할때 TCP기반이면 1000개의 소켓 연결을 유지해야하고 UDP 로 한다고 하더라도 1000회의 데이터 전송이 필요합니다. 이렇듯 다수의 클라이언트에게 동일한 데이터를 전송하는 .. 2020. 5. 4.
13.다양한 입출력 함수들 리눅스 기반에서의 send & recv 함수를 소개하겠습니다. #include ssize_t send(int sockfd,const void * buf, size_t nbytes,int flags); ->성공 시 전송된 바이트 수, 실패 시 -1 반환 sockfd 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터 전달. buf 전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달 nbytes 전송할 바이트 수 전달 flags 전송 시 적용할 옵션 정보 전달 #include ssize_t recv(int sockfd, void * buf, size_t nbytes,int flags); ->성공 시 수신한 바이트 수(단 EOF 는 0), 실패 시 -1 반환 sockfd 데이터 수신 대상과의 연결을 .. 2020. 5. 1.
12. I/O Multiplexing 멀티프로세스 서버는 프로세스마다 별도의 메모리 공간을 유지하기 때문에 상호간에 데이터 교환에 복잡한 방법을 택할 수 밖에 없습니다. 즉 IPC가 좀 복잡한 통신 방법인거죠. 이 대안 법이 'IO 멀티플렉싱' 입니다. IO 멀티플렉싱 서버는 프로세스의 생성을 동반하지 않으면서 다수의 클라이언트에게 서비스를 제공할 수 있습니다. 멀티플렉싱의 단어의 이해가 필요 합니다. '하나의 통신 채널을 통해 둘 이상의 데이터(시그널)를 전송하는데 사용되는 기술' 입니다. 시(time)분할 멀티플렉싱 기술 -> 여러명에서 대화를 오고가는 느낌 주파수(frequency) 분할 멀티플렉싱 기술 -> 여러명이 한번에 이야기 하는데 목소리로 구분 하는 느낌 -select 함수의 이해 Select 함수는 멀티플렉싱 서버 구현에 있.. 2020. 4. 28.
11.프로세스 간 통신 (Inter Process Communication) 이번 챕터에서는 두개의 프로세스 상호간에 데이터를 주고받는 방법에 대해 알아보겠다. 이는 서버의 구현에 직접적인 연관은 없지만 운영체제를 이해한다는 측면에서도 의미가 있다. 프로세스간 통신이 가능 -> 데이터 주고 받음 -> 동시에 접근 가능한 메모리 공간 존재해야함 하지만 프로세스는 서로 완전히 별개의 메모리 공간을 지닌다. 따라서 fork 함수 호출을 통해 생성된 자식 프로세스 조차 부모 프로세스와 메모리 공간을 조금도 공유하지 않는다. 그래서 다른 방법을 통해 이루어질 수 있다. 두 프로세스 간의 통신을 위해 파이프라는 것을 생성해야한다. 위 그림처럼 파이프는 프로세스에 속한 것이 아니다. 파이프는 소셋과 마찬가지로 운영체제에 속하는 자원이다->그러므로 fork함수의 복사 대상이 아니다. 이렇게 운.. 2020. 4. 25.