ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< DAAPサーバーの制作 | main | DAAPサーバー途中経過 >>

調査結果メモ

サイトに正式アップする前のメモ書き。
・DAAPはHTTPの拡張プロトコルとして実装されている。
 従って、データのやり取り自体はHTTPサーバーの機能を使えば実装できる。
・クライアントからサーバーへの要求は、HTTPのパス名等を使って行われる。

 例えば、

 ログイン要求
  GET /login HTTP/1.1

 データベース一覧照会
  GET /databases?session-id=100&revision-number=2&delta=0 HTTP/1.1

 と言った具合。


・クライアントからサーバーへ出せるコマンドは次の通り。

 ・ログイン
 ・サーバー情報取得
 ・データベース一覧照会
 ・曲情報取得
 ・コンテナ(プレイリスト)一覧取得
 ・指定コンテナ内の曲情報取得
 ・更新情報取得
 ・曲データ取得
 ・ログアウト

・サーバーからクライアントへの応答はHTTPのレスポンスを使って行われる。
 その際のデータフォーマットは、DAAP独自形式のバイナリデータである。これはチャンクで区切られたデータとなっている。

・レスポンス・データはgzip圧縮されているようである。
 圧縮されているかどうかは、HTTPレスポンスヘッダーに記載されているので、これを参照して判断する。



●サンプル

ログインコマンド


【クライアント → サーバー】

GET /login HTTP/1.1
Host: 192.168.1.8:3689
Client-DAAP-Version: 3.11
User-Agent: iTunes/11.0.2 (Windows; Microsoft Windows XP Home Edition Service Pack 3 (Build 2600)) AppleWebKit/536.27.1
Client-iTunes-Sharing-Version: 3.9
Accept-Language: ja-jp, ja;q=0.75, en-us;q=0.50, en;q=0.25
Accept-Encoding: gzip


【サーバー → クライアント】

HTTP/1.1 200 OK
Accept-Ranges: bytes
DAAP-Server: forked-daapd/0.19gcd
Content-Type: application/x-dmap-tagged
Content-Encoding: gzip
Content-Length: 44
Server: forked-daapd/0.19gcd

[バイナリデータ]
0000 6d 6c 6f 67 00 00 00 18 6d 73 74 74 00 00 00 04 mlog....mstt....
0010 00 00 00 c8 6d 6c 69 64 00 00 00 04 00 00 00 64 ....mlid.......d

Tag: login response 24 bytes
Tag: status (mstt) 4 bytes; Status: 200
Tag: session id 4 bytes; Id: 100


プログラム・開発(DAAPサーバー) | comments (0) | -

Comments

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい