Haskellでネットワークプログラミングと,パーサを作る練習として
ウェブサーバを作ってみました.
C言語で書いた物と比べてみると面白いかもしれません.

仕様

  • forkによるマルチクライアントへの対応.
  • 命令はGETにのみ対応
  • Content-Typeは常にtext/htmlを返す
  • URIに「..」が含まれていたらエラーを返す*1

適当ですね・・・.

ソースコード

余裕で100行きってます.Cと違って,ただやりたい事の意味を並べていけばプログラムが動く^^
Haskell良いねぇ.

このhttpdではHTTPリクエストの解釈にParsecを使っています.
なかなか便利です.

実行

runghc Main.hs

ghc -package network Main.hs
./a.out   <== Windowsなら a.exe

で動きます.引数で待ち受けるポートを指定する事も出来ます.
カレントディレクトリ/public_html/以下のファイルが公開されます.
セキュリティホールが有るかも知れないので,外部からアクセスできるような環境では実行しない方が良いです^^;

解説

不明な点があれば,コメントか掲示板に書いてください.

参考

コメント


お名前:

*1 hoge..htmlとかも禁止^^;
添付ファイル: fileMain.hs 2934件 [詳細]