programing/Networks18 표준 입출력 함수, 입출력 스트림, select()의 문제, 쓰레드 - 표준 입출력 함수 > 좋은 이식성, 버퍼링을 통한 성능 향상에 도움 > 버퍼링을 이용하면 모든 상황은 아니지만 전송할 데이터양이 많을수록 성능이 우월 (전송하는 데이터 양, 출력 버퍼로 데이터 이동 횟수) - 표준 입출력 함수 vs 시스템 함수 > 시스템 함수 read() write()를 이용하면 큰 용량의 파일을 읽을 시 버퍼를 제공 하지 않기 때문에 느리다. > 표준 입출력 함수 fputs() fgets()는 버퍼를 이용하기 때문에 보다 빠르다 - 표준 입출력 함수 사용에 있어서 불편한 사항 > 양방향 통신이 쉽지 않다 > 상황에 따라서 fflush 함수의 호출이 빈번히 등장할 수 있다. > 파일 디스크립터를 FILE 구조체의 포인터로 변환해야 한다. cf. 파일을 읽고 쓰기가 동시에 가능하려면 .. 2015. 5. 21. 멀티 캐스트& 브로드 캐스트 - 멀티 캐스트 이점 > 특정 멀티 캐스트 그룹을 대상으로 데이터를 단 한번 전송 > 단 한번 전송해도 그룹에 속하는 모든 클라이언트는 데이터 수신 > 멀티 캐스트 그룹 수는 IP 주소 범위 내에서 얼마든지 추가 가능 > 특정 멀티캐스트 그룹으로 전송되는 데이터를 수신하려면 해당 그룹에 가입 - 멀티 캐스트 그룹 : 클래스 D에 속하는 IP 주소(224.0.0.0 ~ 239.255.255.255) -> 멀티 캐스트 그룹 가입 : IP 주소중 클래스 D를 목적지로 전송되는 멀티 캐스트 데이터를 수신 - 멀티 캐스트는 UDP 기반 - 다수의 클라이언트에게 동일한 데이터를 전송하는 일은 서버와 네트워크의 트래픽 측면에서 매우 부정적 => 멀티 캐스트 : 하나의 영역에 동일한 패킷이 둘 이상 전송되지 않음 > .. 2015. 5. 18. 입출력 함수 - int send( SOCKET s, const char* buf, int flags ); int recv( SOCKET s, char* buf, int flags ); // 성공시 송수신된 바이트 수, 실패시 SOCKET_ERROR (EOF 전송시 0) - 옵션 옵션 의미 send() recv() MSG_OOB 긴급 데이터(Out-of-band data)전송 옵션 O O MSG_PEEK 입력버퍼에 수신된 데이터 존재유부 확인 옵션 O MSG_DONTROUTE 전송과정에서 Routing 테이블을 참조 안함 요구 Local 네트워크 상에서 목적지 찾을 때 사용 O MSG_DONTWAIT 입출력 함수 호출 과정에서 블로킹 안됨을 요구 Non-blocking IO의 요구에 사용 O O MSG_WAITALL .. 2015. 5. 18. IO 멀티플렉싱 기반 서버 - 프로세스의 생성을 동반하지 않고 다수의 클라이언트에게 서비스 제공하는 방법 - 멀티플렉싱 : 하나의 통신채널을 통해서 둘 이상의 데이터를 전송하는 데 사용되는 기술 물리적 장치의 효율성을 높이기 위해서 최소한의 물리적인 요소만을 사용해서 최대한의 데이터를 전달하기 위해 사용되는 기술 - 멀티플렉싱을 적용 시킬 경우 서버는 접속한 클라 수에 상관없이 프로세스 하나만으로 연결이 가능 - select() > 한 곳에 여러 개의 파일 디스크립터를 모아놓고 동시에 관찰 가능 (파일 디스크립터 관찰 = 소켓 관찰) -> 수신한 데이터를 지니고 있는 소켓 존재? -> 블로킹 되지 않고 전송 가능한 소켓은 무엇? -> 예외상황이 발생한 소켓은 무엇? cf. 관찰 항목 각각을 event 라 함 int select( .. 2015. 5. 15. 이전 1 2 3 4 5 다음