소켓 타임아웃

소켓 타임아웃서버 / 클라이언트 모델 구축을 위해서 우리는 보통 Socket API 를 사용하게 된다. 이 Socket API 는 전송계층 레벨에서 통신을 가능하도록 도와주며, 매우 신뢰성있게 작동한다. 대부분의 read/write 작업을 할때 문제가 생기면 문제 상황을 리턴해 주기 때문에 문제상황에 대처하기도 쉽다.그러나 네트워크 단절, 클라이언트 프로...

gethostbyname에서 timeout 처리하기

gethostbyname에서 timeout 처리하기gethostbyname은 도메인이름에 대한 주소를 얻어오는 소켓(이 함수는 편리하게 사용할 수 있으나 입출력 과정이 감추어져 있어서, timeout처리를 할 수 없다는 문제가 있다. timeout 처리를 위한 방법에 대해서 고민해 보려고 한다.리눅스는 /etc/resolv.conf에 DNS(Domain ...

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 소켓은 네트워크 통신을 위한 기술만을 제공한다. 다수의 클라이언트를 처리하기 위한 기술등은 제공하지 않는다. 소켓 프로그래밍에서 데이터 통신 이외의 기술은 독립된 기술로 존재한다. 그러므로 (다수의 클라이언트를 처리하는 등의...

서버 클라언트 모델 기반의 계산기 프로그램 제작

서버 클라언트 모델 기반의 계산기 프로그램 제작작성자본 강좌에서는 네트웍을 통해 접속한 클라이언트가 전송한 수식데이터를 받아서 서버에서 연산후 그 결과를 다시 클라이언트로 전송하는 C/S 프로그램 예제이다.지금까지 익한 자료구조와 네트워크 프로그래밍 기법, 계산기 알고리즘을 이용하여 직접해보도록 한다. #include #include

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

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

BSD 소켓 프로그래밍 입문

BSD 소켓 프로그래밍 입문현재 네트워크는 internet(인터넷)으로 대변된다. 때문에 네트워크 대신 인터넷이라는 용어를 사용하도록 하겠다. 인터넷 프로그램은 인터넷상에서 멀리 떨어진 프로그램 사이에서 통신을 수행하는 프로그램이다. 인터넷 프로그램을 이용해서 우리는 웹페이지를 서핑하고 온라인 게임을 하며 주식거래를 하고 물건을 구입한다. 이메일을 주고 ...

확장성이 뛰어난 Agent Manager 시스템의 구축

확장성이 뛰어난 Agent Manager 시스템의 구축확장성을 확보하기 위한 방법은 여러가지가 있을 것이다. 여기에서는 그중 PlugIn 방식을 이용한 확장성확보에 대한 내용을 다룰 것이다. Agent&Manager 방식의 프로그램을 만든다고 가정해보자. SNMP(이러한 시스템에서 Agent 프로그램을 만들려고 한다면, 설계단계에서 가장 중요하게 생각해야...

리눅스 유저 보안

리눅스 유저 보안리눅스 유저 보안을 위한 기본 원칙이다. 아래의 원칙을 만족하는 최적의 솔루션을 찾는게 목적이다. 1. root 권한은 한번에 얻을 수 없다 1. 특정 유저만 su를 수행할 수 있다 1. 일반 유저는 특수한 목적에 한해 제한된 방식으로 root 권한을 획득할 수 있어야 한다 1. 패스워드는 유추하기 힘들어야 한다 1. 운영체제 1. s...