InetDaemon 만들기

InetDaemon 만들기...

입출력 다중화 : poll

poll은 select 와 마찬가지로 다중입출력 을 구현하기 위한 방법으로 사용되며, 동시에 여러개의 클라이언트를 다루는 서버를 제작하기 위한 방법으로 흔히 사용된다. select 의 경우 입출력 이벤트가 발생했을 때 넘겨주는 정보가 너무 적음으로써, 프로그래밍시 여기에 신경을 써줘야 하는데 poll 을 이용하면 이러한 제한을 극복할수 있다. select ...

epoll - Kernel 2.6 기반

epoll - Kernel 2.6 기반이전의 epoll(2.4에서 epoll은 정식지원 사항이 아니었지만, 2.6에서는 정식지원이 되는 관계로 별도의 커널패치라든지 라이브러리(아래는 간단한 예제입니다. ET (EPOLLET) 방식이기 때문에 소켓을 nonblocking으로 했습니다. ET로 할것인지 LT로 할것인지에 대해서 생각이 다를 수 있는데, 속편하...

xinetd 프로그래밍

xinetd 프로그래밍2002년에 만들어진 문서다. 당시에는 inetd를 사용했는데, (2014년)지금은 xinetd방식을 사용하고 있다. 지금 상황에 맞게 문서를 업데이트 한다. -- 2011/06/23 일반적으로 네트워크 프로그램을 만든다고 하면, 독립된 소켓 서버 프로그램을 생각할거다 함수로 연결 소켓을 가져온다음 멀티 스레드 혹은 멀티 프로세스방식...

멀티 프로세스 기반 소켓 프로그램 개발

멀티 프로세스 기반 소켓 프로그램 개발멀티 프로세스는 시스템 프로그래밍 영역으로 에서 자세히 다루고 있으니 참고하기 바란다. BSD 소켓은 네트워크 통신을 위한 기술만을 제공한다. 다수의 클라이언트를 처리하기 위한 기술등은 제공하지 않는다. 소켓 프로그래밍에서 데이터 통신 이외의 기술은 독립된 기술로 존재한다. 그러므로 (다수의 클라이언트를 처리하는 등의...

select를 이용한 다중연결 처리 서버 작성

select를 이용한 다중연결 처리 서버 작성우리는 문서를 읽어 보기 바란다.select(2) 를 통해서 다중연결서버를 만들경우 fork(2)를 이용한 멀티 프로세스에 비해서 몇가지 장점이 있다. 프로세스 생성은 매우 많은 비용이든다. 입출력 다중화는 프로세스 생성비용을 줄일 수 있다. 멀티 프로세스 방식 프로그램의 경우 독립된 프로세스로 실행되므로 프로...

Mysql 품질 관리 - Alive 체크

Mysql 품질 관리 - Alive 체크QOS 에는 애플리케이션 품질의 측정도 포함된다. 대부분의 애플리케이션이 품질을 관리할 수 있는 API를 제공하기 때문에, 호출방법만 알고 있다면 문제 없이 정보를 얻어낼 수 있다. 여기에서는 Mysql(서버 프로그램으로 데몬(# mysqladmin -u root -p pingmysqld is alive물론 C AP...

루비 파일 입출력

루비 파일 입출력가장 중요한 건 역시 파일 다루기 이겠다. 여기에서 다룰 내용은 다음과 같다. 기본 파일 입출력 파일 삭제, 이름 변경, 권한 변경 파일 정보 가져오기 파일 위치 조작 고수준 입출력 장치들 디렉토리 표준출력은 puts와 print 메서드를, 표준입력은 gets를 이용한다.#!/usr/bin/rubyprint "Enter a value ...

서버 프로그램 개발을 위한 ruby Gserver

서버 프로그램 개발을 위한 ruby Gserver여자처자 해서 간만에 서버 프로그램을 만들어야 했다. 예전 같으면 를 쓸 수 있는 상황이 아니다. Persistant한 통신채널을 유지해야 하기 때문이다. 최근 ruby 언어를 사용하고 있으니, ruby기반으로 서버 프로그램을 간단히 만들 수 있는 무언가 있을 거라고생각해서 찾은게 "GServer"이다. G...

Ruby thread

Ruby thread새로운 언어를 배워야 겠다는 생각이 들적에 사용하는 나름의 방식이 있다. 1. 문법은 대략 쭉 훑어 본다. 문법을 외울 것도 아니고, 그럴 필요성도 못 느끼겠다. 쭈욱 읽어 내려간 다음, 몇 줄이라고 코드를 짜보면서 익힌다. 1. 자료구조 관련된 것들 훑어본다. 배열, 해쉬, 맵, set 등등 1. 파일 관리 쪽 본다. 1. 를 본...