Apple の AirMac Express で利用するプロトコルは RAOP と呼ばれています。これは Rendezvous の名前がそうなっているためで、略称は不明。 → Remote Audio Output Protocol というらしい。CocoaDev に詳細。
Rendezvous を利用してネットワークにつながっている AirMac Express を探すには、以下のようにしてやればよし。
use Net::Rendezvous; my $r = Net::Rendezvous->new("raop"); $r->discover(); for my $entry ($r->entries) { printf "%s %s:%s\n", $entry->name, $entry->host, $entry->port; }
RAOP プロトコル自体は CSS のクラックで有名なDVDJon氏が解析済みで、JustePort というC#のオープンソースソフトウェアで公開されています。基本的には RTSP をベースにして、AES や RSA で暗号化したプロトコルの上に Apple ロスレスファイルを垂れ流すイメージ。
SourceForge を探してみたら、Airport Express Client というのを発見。これは JustePort を C に移植し、GNUPod や Rendezvous の機能と組み合わせて、GTK で GUI をつくっているようです。Linux でも AirTunes ができてしまう! 作者は日本人の方みたい。
とりあえず JustePort の RAOPClient を Perl にポーティング中。相変わらず Math::Pari の整数処理がうっとうしいですが、それ以外は Crypt::Rijndael, Crypt::RSA, RTSP::Lite, MP4::Info など、CPANモジュールがそろっているので組み合わせていけばスムーズにできそうです。