분류 전체보기380 12.멀티플렉싱 #.멀티플렉싱 기반의 서버 멀티프로세스 서버의 단점과 대안 이전 Chapter에서는 다중접속 서버의 구현을 위해 클라이언트의 연결요청이 있을 때마다 새로운 프로세스를 생성하였다. 이는 실제 사용되는 방법이지만 문제가 전혀 없는 방법은 아니다. 프로세스의 생성에는 상당히 많은 대가를 지불해야 하기 때문이다. 많은 양의 연산이 요구되며, 필요한 메모리 공간도 비교적 큰 편이다. 또한 프로세스마다 별도의 메모리 공간을 유지하기 때문에 상호간에 데이터를 주고받으려면 다소 복잡한 방법을 택할 수밖에 없다. 프로세스의 생성을 동반하지 않으면서 다수의 클라이언트에게 서비스를 제공할 수 있는 방법으로 IO멀티플렉싱 서버가 있다. 하지만 이 모델은 구현하고자 하는 서버의 특성에 따라서 구현방법이 달리 결정되어야 한다. .. 2020. 8. 14. 11.프로세스간 통신 #.프로세스간 통신의 기본 개념 프로세스간 통신의 기본 이해 프로세스는 완전히 별개의 메모리 구조를 지닌다. 따라서 fork 함수 호출을 통해서 생성된 자식 프로세스 조차 부모 프로세스와 메모리 공간을 조금도 공유하지 않는다. 그래서 프로세스간 통신은 별도로 마련된 방법을 통해서만 이뤄질 수 있다. #.파이프(PIPE) 기반의 프로세스간 통신 다음 그림은 프로세스간 통신의 방법으로 사용되는 파이프 기법의 구조적 모델을 보이고 있다. 위 그림에서 보이듯이 두 프로세스간 통신을 위해서는 파이프라는 것을 생성해야 한다. 이 파이프는 프로세스에 속하는 자원이 아니다. 이는 소켓과 마찬가지로 운영체제에 속하는 자원이다. 운영체제가 마련해 주는 메모리 공간을 통해서 두 프로세스는 통신을 하게 된다. #include.. 2020. 8. 14. 10.멀티프로세스 기반의 서버구현 프로세스의 이해와 활용 #.다중 접속 서버의 구현 방법들 네트워크 프로그램은 CPU의 연산을 필요치 않는 데이터의 송수신 시간이 큰 비중을 차지하므로, 둘 이상의 클라이언트에게 동시에 서비스를 제공하는 것이 CPU를 보다 효율적으로 사용하는 방법이 된다. 때문에 우리는 둘 이상의 클라이언트에게 동시에 서비스를 제공하는 다중접속 서버에 대해 논의하고자 한다. 다음은 대표적인 다중접속 서버의 구현 모델 및 구현 방법이다. #.프로세스(Process)의 이해 프로세스는 간단히 다음과 같이 정의할 수 있다. "메모리 공간을 차지한 상태에서 실행중인 프로그램" 하드디스크에 저장되어 있는 상태는 프로그램이라고 한다. 이 프로그램이 메인 메모리(Main Memory)라는 곳으로 이동해서 실행을 위한 준비를 마치게 되.. 2020. 8. 13. 9.소켓의 다양한 옵션 소켓에는 다양한 특성이 존재하는데, 이러한 특성은 소켓의 옵션변경을 통해서 변경이 가능하다. #.Protocol Level 소켓의 옵션은 계층별로 분류된다. IPPROTO_IP 레벨의 옵션들은 IP프로토콜에 관련된 사항들이며, IPPROTO_TCP 레벨의 옵션들은 TCP 프로토콜에 관련된 사항들이다. SOL_SOCKET레벨의 옵션들은 소켓에 대한 가장 일반적인 옵션들로 생각하면 된다. #.getsockopt & setsockopt 거의 모든 옵션은 설정상태의 참조(Get) 및 변경(Set)이 가능하다. 그리고 옵션의 참조 및 변경에는 다음 두 함수를 사용한다. #include int getsockopt(int sock, int level, int optname, void* optval, socklen_t.. 2020. 8. 12. 8.도메인 이름과 인터넷 주소 #. Domain NameSystem IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템을 가리켜 'DNS(Domain Name System)'라 하며, DNS의 중심에는 DNS서버가 있다. #.도메인이름이란? 인터넷에서 서비스를 제공하는 서버들 역시 IP주소로 구분이 된다. 그러나 기억하기 쉽지 않아 기억하기 좋고 표현하기도 좋은 형태의 도메인 이름이라는 것을 IP주소에 부여해 사용하고 있다. #.DNS서버 네이버의 IP주소인 222.122.195.5를 직접 입력하여 네이버의 메인페이지에 접속하는 것과 www.naver.com 의 입력틍 통해 접속하는 것에 어떤 차이점이 있는 것일까?네이버의 메인 페이지에 접속한다는 점에서 차이가 없지만, 접속의 과정에는 차이가 있다. 도메인 이름은 해당 서버에 .. 2020. 8. 12. 코어 오디오 - AudioStreamBasicDescription 정보출력 Viewcontroller.h Viewcontroller.m 출력결과//1.결과 더보기 //fileTypeAndFormat.mFileType = kAudioFileAIFFType; //2018-11-06 21:57:17.243110+0900 3[932:67326] 0 : mFormatId : lpcm, mFormatFlags : 14, mBitsPerChannel: 8 //2018-11-06 21:57:17.243354+0900 3[932:67326] 1 : mFormatId : lpcm, mFormatFlags : 14, mBitsPerChannel: 16 //2018-11-06 21:57:17.243372+0900 3[932:67326] 2 : mFormatId : lpcm, mFormatFlags .. 2020. 8. 12. 코어 오디오 - 사운드 파일 생성 하기 소리이야기 컴퓨터의 디지털 속성은 연속적인 아날로그 시그널을 처리하기에는 적합하지 않다. 이런 사실은 신호를 샘플링하거나, 사람의 귀로는 차이를 알 수 없게 부드러운 소리 파형을 충분히 잘게 자르는 방법으로 처리된다. 소리가 전해지는 법 사운드의 기본 요소 디지털 사운드로의 변환 ADC(Analog-to-Digital Converter) DAC(Digital-to-Analog Converter) 디지털 변환 과정 -표본화, 양자화, 부호화 과정 필 표본화(Sampling) 아날로그 파형을 디지털 형태로 변환하기 위해 표본을 취하는 것 표본화율(Sampling Rate) 1초 동안에 취한 표본수 (단위: Hz) 표본화율이 높을수록 원음을 잘 표현하나 데이터 공간은 증가 양자화 (Quantizing) 어느 .. 2020. 8. 12. IOS 샌드박스 접근 로직 예제1 출력 path : /var/mobile/Containers/Data/Application/D1D633D9-8ED5-4A72-B02D-D754F6A291CE/Documents filePath : /var/mobile/Containers/Data/Application/D1D633D9-8ED5-4A72-B02D-D754F6A291CE/Documents/RRecord.aif fileURL : /var/mobile/Containers/Data/Application/D1D633D9-8ED5-4A72-B02D-D754F6A291CE/Documents/RRecord.aif 예제2 출력 paths : ( "/var/mobile/Containers/Data/Application/4B1E0587-C5D7-423C-B.. 2020. 8. 11. 7.소켓의 우아한 연결종료 #.TCP 기반의 Half-close TCP에서는 연결과정보다 중요한 것이 종료과정이다. 연결과정에서는 큰 변수가 발생하지 않지만 종료 과정에서는 예상치 못한 일이 발생할 수 있기 때문이다. #.일방적인 연결종료 문제 리눅스의 close 함수호출과 윈도우의 closesocket 함수호출은 완전종료를 의미한다. 완전종료라는 것은 데이터를 전송하는 것과 수신하는 것조차 불가능한 상황을 의미한다. 때문에 한쪽에서의 일방적인 close 또는 closesocket 함수호출은 경우에 따라서 효율적이지 못하다.  호스트A가 마지막 데이터를 전송하고 나서 close 함수의 호출을 통해서 연결을 종료하였다. 때문에 이후부터 호스트A는 호스트B가 전송하는 데이터를 수신하지 못한다. 결국엔 호스트B가 전송한, 호스트A가 .. 2020. 8. 11. 이전 1 ··· 34 35 36 37 38 39 40 ··· 43 다음