Remote Procedure Call

リモートホストのプログラムを呼び出すことができるRPCは古くからありますが、あまり使う機会がありませんでした。セキュリティ面、保守性を考えると比較的使われにくいのは理解できるのですが、Unixの面白い部分でもありますし、プログラムをネットワーク分散実行する際のアイディアにもなりますのて、取り上げてみました。

環境 : Ubuntu 14.04

参考 : http://www.ncad.co.jp/~komata/c-kouza15.htm
RPC以外にも、このサイトにあるC言語講座はとてもわかりやすく書かれていて、とても貴重です。(昔を思い出します) Unixの記述言語としてのCを理解することは、今の時代も有益だと、つくづく感じます。
ソースはこのサイトにあるものを元にしましたが、今の環境だからなのかサーバ側がメモリ解放を二重でやってクラッシュしてしまうので、応急的な修正をしました。
また引数などなつかしいスタイルで書かれているので、これも変更しています。

クライアント側(rpc_clie.c)

サーバ側(rpc_serv.c)

コマンド

apt-get install rpcbind
cc -o rpc_clie rpc_clie.c
cc -o rpc_serv rpc_serv.c

実行結果
rpc01
パケットキャプチャ
rpc02

最初の4つが、サーバ起動時。次の4つがクライアント実行時。(2回分)
rpcbindサービスが起動している必要があります。(sunrpc port:111)