2016년 6월 9일 목요일

뇌자극 TCP_IP 프로그래밍 19강 요약

19장 RPC

1. RPC에 대해서

네트워크 연결을 담당하는 코드와 코드의 실행을 분리 시켜서 개발 시간을 단축 시킨다.
RPC는 네트워크로 떨어져 있는 컴퓨터에서 코드를 실행하는 방식으로 작동한다.
클라이언트에서 코드를 실행시켜 줄 것을 요청하면,
서버는 해당 코드를 실행해서 그 결과를 되돌려준다.

2. RPC 작동 방식

독립된 프로그램의 실행을 요청하는 방식으로 작동한다.
실행 위치는 로컬과 원격 모두를 지원한다.
RPC는 외부 프로그램을 실행시키는 개념이므로
프로그램 이름과 프로그램 실행 인자가 필요하다.
RPC를 이용한 네트워크 프로그램은 실행인자와 실행할 코드를 정확히 명시해야 한다.
이들은 XDR이라는 표준화된 양식에 따라 만들면 된다.

XDR 코드와 서버에서 실행할 코드만 개발하면 된다.

3. RPC의 작동 환경 구축

RPC 관련 패키지를 설치해야 한다.
sudo apt-getinstall portmap

설치하면 portmap 라는 프로그램을 확인할 수 있다
ps -ef | grep portmap 

나 같은 경우는 우분투를 사용하는데 이미 깔려있었다;;

4. RPC 프로그래밍

클라이언트의 요청을 처리할 코드의 이름과 코드가 처리할 데이터의 형식을 정의한다.
타입은 XDR 이라는 특수한 형태를 따른다.

XDR 필터 생성

파일 이름은 파일이름.x 으로 만들면 된다. 주석은 /**/만 쓸 수 있다.

예제)

const MAXAVGSIZE = 200;

struct input_data {
  double input_data<MAXAVGSIZE>;
};

typedef struct input_data input_data;

/*
프로그램의 이름은 AVERAGE 이고,
프로그램의 이름을 가리키는 번호는 3901을 사용했다.
프로그램의 버전은 1이다.
*/
program AVERAGE {
  version AVERAGEVERS {
      double AVERAGE(input_data) = 1;
  } = 1;
} = 3901;

위를 컴파일 해야 한다.

rpcgen avg.x

그럼 4개 파일이 생성된다.

avg.h : avg.x를 해석해서 만들어진 각종 함수와 값들이 선언되어 있다.

avg_clnt.c : avg.x를 해석해서 만들어진 클라이언트 프로그램이다.
               여기에 코드를 추가하는 형식으로 클라이언트를 만든다.

avg_svc.c : 서버에서 호출할 callee프로그램이다.
               여기에 코드를 추가해서 프로그램을 완성한다.

avg_xdr.c : 서버와 클라이언트에서 사용할 XDR 코드가 들어있다.

코드는 깃허브에 올려놨다.

코드 다운 받기

댓글 없음:

댓글 쓰기