블로그 이미지
대갈장군

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2007. 11. 9. 00:37 프로그래밍
RPCGEN 이라는 흥미로운 유닉스 명령어가 있다.

RPC라 함은 Remote procedure call 일꺼다.. -_-;
몇일 전에 외웠는데 까먹었군.. 이놈은 하나의 프로토콜인데 원격 사용자가 서버에 접속하여 명령을 실행하는 것을 말한다..

사실 RPC도 TCP나 UDP를 통해서 원격 사용자 (클라이언트)의 입력값들을 서버측으로 넘겨준다. 결국 TCP/IP 기반의 프로토콜인셈...

하지만 RPCGEN이라는 명령어 때문에 좀 특별해 지는데, 원래 RPC를 사용하려면 클라이언트 측과 서버 측의 stub 를 꼬옥 만들어줘야 한다. (처음에는 걍 하면 안되나 했던 기억이 난다...) 여기서 stub라 함은 하나의 프로그램으로써 사용자에게 각종 잡다한일 예를 들자면 통신 규격으로의 인코딩/디코딩, 각종 입력값의 변환등을 알아서 다 해주는 것이다.

물론 저넘을 사용자가 직접짠다면 골때린다. 우선 RPC를 위한 특별 언어가 따로 존재하여 그 언어를 사용해야만 한다. 아마도 .xdr일 것이다. 고로 언어를 새로 배워야 한다.. 젠장. 물론 C와 매우 매우 유사하기는 해도 짜증이 벌써 밀려온다.

바로 이런 것을 편리하게도 RPCGEN이라는 명령어가 대신해준다. 그저 사용자는 간단한 규칙에 따라서 .x 파일을 작성해 주고 repgen *.x를 해주면 알아서 5개인가 6개의 파일이 만들어진다.

그중에 가장 중요한 파일이 헤더 파일로써 사용자는 그 헤더 파일을 항상 포함시켜서 나머지 사용자 정의 함수를 정의해야 한다.

그러니까 사실 .x 파일은 헤더 파일의 헤더 파일 소스인거다.. -__-;;

암튼, 이렇게 하니까 멀리 떨어진 다른 컴퓨터에서 서버 코드를 실행시켜 놓고 내 컴퓨터에서 클라이언트 프로그램을 수행하면 서버측으로 입력값이 TCP 혹은 UDP를 통해서 날아가는데 이것은 전부 stub라는 놈이 알아서 다 해준다. 사용자는 인터페이스와 규칙만 설정하면 된다.

서버는 들어온 값을 분석하여 서버 컴퓨터의 자원을 이용하여 결과를 다시 리턴하는데 이때도 마찬가지로 리턴되는 모든 것들은 stub를 이용해서 알아서 잘 날아간다...

어찌보면 심히 편하기도 하다. 왜냐면 서로 다른 컴퓨터간의 통신시 가장 문제가 되는 규격을 일치시키는 복잡한 과정이 rpcgen이라는 명령을 통해서 쉽게 이루어 지기 때문인데 단점으로는 세세한 조절을 할 수 없다고 하더라. 당연히 그렇겠지만 그렇다고 새로 언어를 습득하는 것보다는 낫지 않을까?

posted by 대갈장군