MasaのITC Life

夢は起業家!全てにおいて凡人だけど頑張ることだけはいっちょ前!

プログラミング

【C言語】HTTP 404 Not Foundを返すWebサーバの実装

投稿日:2020年2月3日 更新日:



簡単なWebサーバを実装してみます。

簡易的なHTTPの機能しかないので、

webサーバというよりは、

HTTPサーバと呼ぶべきでしょうか。






今回行うことは・・・




HTTPで通信してきた

クライアントに対して、

HTTP 404 Not Found


無条件でリプライします。




まずソースはこちらです。



最初に接続を待つポートに、

80番ポート(HTTP)を定義しています。




(main分)
大まかな処理の流れは、

  • ソケット作成して、接続を待つ
  • クライアントと接続したらHTTP処理を行う


これだけです。




ソケット作成&待機は、

startserver関数で定義して、

HTTP処理は、

handle_webpage関数で定義しています。




なおhandle_webpage関数から、

送信のみを行う関数として、

send_data関数に派生しています。




send_data関数はコードを

見やすくするためだけに

関数化してあるあります。




handle_webpage関数内で

送信しても問題ありません。




handle_webpage関数内で、

HTTPリクエストに対して、

無条件で404を返す処理をしています。




"HTTP1.1 404 Not Found"を

送信してからwebページを送ります。




webページは簡易的なものなので、

ファイル化せず、そのまま送ります。

もちろん、ファイル化して

それをreadして送信するのも可能です。




またクライアン側の

IPアドレスとポート番号も表示しています。




サーバ側の実行画面です。



作成したwebサーバに

クライアントがアクセスした時、

実際に表示される画面です。


これでWebサーバの礎は完成です。

これを拡張してみるのも面白いです。




webブラウザからではなく、

cygwinを用いてコマンドで

接続してみてみます。




以上です。

最後まで読んでいただきありがとうございました。


-プログラミング

Copyright© MasaのITC Life , 2023 All Rights Reserved Powered by STINGER.