Top / Scheme部会 / ネタ / httpserver

Schemeで書くHTTP Server

昔書いてみて放ってあったやつ。

期間限定で、実働機公開

とりあえず、動かしてみる → http://kaw.ath.cx:7080/index.html

もともとはここでのお題用に書いてみたもの。
OpenBSDのGaucheは、まだthread付きでコンパイルできてないので、子プロセスforkによる原始的な実装です。

かいつまんで説明

  • httpserver.scm ... 超単純なhttpdを実装しているライブラリ
    • socketのハンドリングは自前でやってます
      • 大域変数maxchildrenが、同時にforkできる子プロセスの最大数。ApacheのMaxClients?的なもの。
    • その上にHTTP 1.0を部分実装
      • 取り扱えるmethodはGETのみ。
      • 送出可能なコンテンツは、Text/Htmlのみ。
  • serversample.scm ... httpserver.scmの使用例
    • (start-server port-num contents)でサーバが走行
    • contentsはハッシュとして与える。ハッシュキーは、URLのfilepath部分。その値はそのURLが与えられたときに呼出される関数の実体を格納しておく。
    • 関数は呼出されるときに2つの引数をとる。
      • 1つめは、URLのfilepath部分
      • 2つめは、GET methodのQUERY STRING*1

Top / Scheme部会 / ネタ / httpserver

*1 現在未実装。暫定的に文字列"no-qstr"が充当される

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-29 (日) 15:05:43 (2768d)