FrontPage > NullHttpd > NullHttpd SCReading > NullHttpd SCReading Survey (Now)
はじめに †
概観をつかみましょ〜。
ややこしくなるので、Windowsの関数とかはのせてませんー。
プログラム構成 †
関数のドキュメントを見て、なんとなく推測。
種類 | File名 | 概略 | 重要度 |
定義ファイル | main.h | 普通のヘッダ。 ただ、Windows用とその他OS用で定義が異なるように作ってある #ifdefがややこしぃ.... | ☆☆★ |
実装ファイル | main.c | 今回のプログラムのエントリポイント。 ソケットの初期化と、 ソケット応答ループの開始 | ☆★★ |
| cgi.c | ドキュメントが見当たらない。 こういうときは、関数の名前から推測しましょう。 んー、cgiを動的に作ってるのかな? 知らないC標準関数がいっぱいだった。 | ☆☆★ |
| config.c | 構成用ファイルの作成と、System 設定。 printf文にそう書いてある。 | ☆☆★ |
| files.c | ファイル送信と、ディレクトリリスト作成? ほとんど手がかりがない。 time構造体、**dir()関数とかを使っているので、そう推測 | ☆★★ |
| format.c | URL関連? Stringとかに対して処理する関数が多い。 いまいち、機能がつかめなかった。 | ☆☆☆ |
| http.c | HTTPの使用にのっとって色々する関数群? 引数の多い関数があるので、大事そう。 | ☆★★ |
| server.c | 見るからに大事そう...(笑 サーバ関連の処理。 ここも#ifdefがいっぱいあってめんどくさい。 | ★★★ |
| win32.c | win32に関するもの。 さっと見た感じUnix系で使わない処理も多い..? | ☆☆☆ |
プログラムのエントリポイント †
main.c 内の main(); から実行される。
Purpose : Program entry point (UNIX) and call accept loop
main.c 内のドキュメントに書いてありました。
ちなみに、windowsユーザは、WinMain?(); という別のメイン関数で始まる。
main() の処理 †
1
2
3
4
5
6
7
| int main(int argc, char *argv[])
{
snprintf(program_name, sizeof(program_name)-1, "%s", argv[0]);
init();
accept_loop(NULL);
return 0;
} |
init() と accept_loop() を呼び出しています。
ユーザとプログラムの関係 †
まずは、どこから調べようかな...。
init() と、accept_loop() の中身を見てみないことにはわかりません。
と、ここで気がついたことが1つありました。
一度もコンパイルしてないじゃん?
いそいそと、コンパイルして、動作を確認しました。
ユーザイベント †
ユーザイベントハンドリング †
プログラムレスポンス †