大学2年の時に自由課題で提出したhttpd「Mapache」と
研究室でのhttpdを作れという課題で提出予定の「Panda」のソースコードを公開します.

Panda

研究室の課題で提出したhttpd.同時に1クライアントとしか接続できません.
Mapacheより低機能ですが,若干ソースコードが読みやすいはずです.
セキュリティの問題等が存在すると思うので,外部に公開された環境で実行しないでください.

ソースコード

  • キーワード
    • httpd
    • シングルクライアント
gcc panda.c -o

等でコンパイルできます.ソースコードは自由に使っていただいて構いません.
Windowsでは動きませんが,少しの変更で動くはずです.(WSAStartup,closesocket)等など)
filepanda.c

仕様

  • 実行方法
    ./panda
    コマンドライン引数で待ち受けポートを指定する事ができます.
    ./panda 8000
  • ファイルの置場
    chdir/public_html/以下のファイルが公開されます.
  • content/type
    全てのファイルはtext/htmlとして送信されます.

Panda2世

マルチクライアントに対応したPandaです.

ソースコード

  • キーワード
    • httpd
    • マルチクライアント
    • マルチプロセス

filepanda2.c
forkでPandaの子供を作る事で,マルチクライアントに対応させています.
コンパイル方法などはPandaと同じです.

Mapache

二年生の時に作ったhttpd.HTTPの勉強ついでに書きました.
HTTP,Basic認証,Digest認証の実装が気になる方は読むと面白いかもしれませんが,
正直ソースコードはぐちゃぐちゃです.時間を見つけて書き直します.
セキュリティ周りが怪しいので間違っても常時稼動はやめた方が良いです.
Windows,FreeBSD,Linux(Debian),MacOSXでの動作を確認しました.

ソースコード

  • キーワード
    • HTTP
    • Basic認証
    • Digest認証
    • base64
    • md5

filehttpd.zip
ソースコードしか入っていません.実行するにはコンパイルする必要があります.
Makefileは入ってないので,readme.txt(S-JIS)を読んでください.

おまけ

  • Haskell版httpd
    Haskellでもウェブサーバを書いてみました.Cよりも簡潔に書けています.

コメント


お名前:
添付ファイル: filepanda2.c 1199件 [詳細] filehttpd.zip 1110件 [詳細] filepanda.c 1161件 [詳細]