NSProxy / NSConnection

前回のRemoteProcedureCallに似たしくみで、Objective-Cにも同様のリモート呼び出しの仕組みがありましたので、テストしてみました。
Objective-Cのダイナミックな特性により、リモートメソッドもローカルとかわらない方法で呼び出せるところが興味深いです。

環境 : GNUStep / Ubuntu 14.04

protocol.h

nsconnServ.m

nsconnClie.m

コマンド

apt-get install gnustep
apt-get install gnustep-devel
gcc gnustep-config --objc-flags nsconnServ.m -lobjc -lgnustep-base -o nsconnServ
gcc gnustep-config --objc-flags nsconnClie.m -lobjc -lgnustep-base -o nsconnClie

実行結果
nsconn02
文字列、オブジェクトの送信・受信をしています。

パケットキャプチャ
nsconn01
gdomapサービスが、サーバとクライアントの通信を仲介します。これはUbuntuでgnustepをインストールすると自動的にたちあがります。
nsconnServが立ち上がると、gdomapサービスにアクセスし、nsconnClieからのリクエストまちになります。ポート番号は指定していないので、nsconnClieが起動時gdomapサービスにアクセスしたときに、通知されると思われます。

参考:https://github.com/timburks/gnustep-base