3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTTPサーバーの実装 | 42Tokyo Webserv

Posted at

はじめに

42Tokyoの課題で簡易的なHTTPサーバーをC++で実装しました。
HTTPサーバー自体や、実装についての解説は他の記事の方が素晴らしいと思いますので、この記事ではおすすめのサイトや本についてまとめていきます。

技術的な説明はほぼゼロですが、何から始めたら良いか分からない方などの参考になればと思います。

42Tokyoについて

おすすめのサイトなど

HTTP全般

HTTPについて幅広く、無料で学べる。大体のことはまとめてある。

本当に何も分からない人はこの本から始めるのがおすすめ

RFC(インターネット技術の標準的な仕様を記した文書)
HTTPの仕様についてまとめられています。基本的には日本語訳のものを読んで、解釈が分かりづらいと思ったら英語で読むくらいの感じで使いました。
私は所々しか読んでいません。

Config

nginxのconfigはあくまで一例なので、自由に決めていいと思います。
ただ、勉強しておくと今後やInceptionで役立つかもしれません。

CGI

担当では無いのであまり詳しくはないのですが、以下のようなサイトが参考になりそうです。

autoindex

実装

C言語の簡易的なHTTPサーバー実装例が載っている。42Tokyoで使うシステムコールの使い方が幅広くのっているので他の課題などにもおすすめ

C言語でのソケットプログラミングについてまとめられている。初心者にわかりやすい。

友人に見せてもらいましたが、分厚くて全て読むのは大変です。コードは読みづらいですが、詳細に書かれています。

おすすめです。大体の実装の流れがわかります。

curl・telnet

テストするのによく使うコマンド2つです。これらを見ればだいたいの使い方はわかると思います。

python requests

毎回curlやtelnetを使うのはめんどくさいので、pythonのrequestsライブラリを活用するといいと思います。
使い方はかなり簡単です。

Test

Google Testを初期に導入しましたが、1人しか使っていなかったので結局最初しか使いませんでした。。。
テストは工夫して活用していくべきだと思います。

また、上記のpython requestsやshell scriptを使用して、簡単なテストはすぐに実行できるようにしていました。

生徒ブログ

実装について書かれている42生徒ブログは検索すればすぐに出てきます。

課題について

subjectやレビュー項目で曖昧な部分はディフェンスを用意しておけば、ある程度自由にやっていいと思います。
曖昧な部分は自分たちで決めることも多かったです。
RFCやnginxに縛られすぎず、必要最低限の項目だけは満たすように進めました。

私達は実装しながら、対応しなければいけないことを学んでいった感じなので、修正が大変でした。
実際にnginxを動かしたり、一通り学んでからしっかり方針を立てて実装に取り組んだほうが良いと思います。

最後に

最後まで読んでいただきありがとうございました。少しでも参考になれば嬉しいです。

Inceptionという課題についても似た形式で記事を書いていますので合わせて御覧ください。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?