강좌 & 팁
서버 프로그램을 만들때 서버를 별도로 만들어 사용 하는 stand alone 방식과 inetd 방식이 있는데요
두 방식의 차이점은 아래 그림을 보면 이해가 편합니다.
1. stand alone 방식
stand alone 방식은 서버에서 통신 부분과 데이터 처리 부분을 전담 하는 방식입니다.
따라서 여러개의 클라이언트가 접속할 경우 for, select, poll,thread 등의 방식으로 처리 해 주어야 합니다.
2. inetd 방식
inetd 방식은 통신부분을 inetd 라는 데몬프로그램에 맏기고 서버는 실제 데이터 처리와 응답부분 만을 하는 방식 입니다.
그래서 inetd 방식의 서버에는 소켓을 직접 처리 하는 부분이 없고 표준입출력 방식으로 처리 하게 됩니다.
만들어진 서버는 서비스에 등록을 하고 inetd 데몬을 실행해서 사용 하게 되며, 아래 순서와 같습니다.
- 만들어진 서버 프로그램은 test_server 라고 가정 합니다.
1. 서버 프로그램을 /usr/sbin/ 에 설치 합니다.
2. 서비스 등록
]#vi /etc/services
~생략~
inet_server 1392/tcp
~생략~
이렇게 등록해 줍니다. 여기서 1392 포트 번호 입니다.
3. inetd 환경 설정
]#vi /etc/inetd.conf
~생략~
test_server stream tcp nowait root /usr/sbin/tcpd /usr/sbin/test_server
~생략~
4. inetd 실행
]#/sbin/inetd /etc/inetd.conf
5. 확인
]#netstat -a
[root@falinux ]$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:test_server 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:telnet 0.0.0.0:* LISTEN
netstat: /proc/net/tcp6: No such file or directory