-1

HTTPサーバーを構築するには、 RFC2616標準に従う必要があると言う人もいます。これは問題ありませんが、まったく新しいC開発者として、html、css、js、および画像を処理するためにHTTPプロトコルを実装するために必要なモジュール、テクニックを知りたいと思います。

私は井戸を再発明しようとはしていません。Cを学ぶための出発点が必要です。そして私の経験では、プロジェクトの方法で役立つものを構築することが、新しいことを学ぶための最良の方法です。

PS可能であれば、ゼロから構築したいと思います。

4

2 に答える 2

6

HTTP サーバーは単純なテキストベースのサーバーです。すべてのプロトコル メッセージは平文で送信されます。さらに、それはステートレスです (つまり、以前の接続について何も覚えておく必要はありません。各リクエストを新しいものであるかのように処理します)。これらの概念を念頭に置いて、基本的にどのようsocket programmingに機能するか (および C で適切にプログラミングする方法) を理解する必要があります。ソケット プログラミングは、使用しているライブラリにも依存します (一般に、POSIXWindows 以外のシステムで使用され、それ以外の場合WinSock2は Windows で使用されます)。

他の機能 (HTML、js など) はブラウザーによって処理されます。サーバーは単にデータをクライアントに送信します (トランスポート プロトコルも再作成しない限り、通常は TCP 経由)。

また、間違いなくソケット プログラミング (C および C++) の最良のリファレンスはBeej's Guideです。

編集

非常に基本的なレベルでは、HTTP サーバーの疑似コードは次のようになります。

while(1) {
  client = accept(); // Receive some connection
  recv(client, req); // Receive the request from the client
  // ... Do some HTTP request processing ...
  send(client, resp); // Send the client the response/data
}

そうは言っても、私はあなたの投稿を読み直したところです。おそらく、ソケットプログラミングはCを学ぶのに最適なポイントではありません.それができないわけではありません. 、言語とネットワーク層の両方に頭を悩ませることは、はるかに困難です。ポインタ、メモリ管理、構造体などのアイデアに慣れるために作成するものは他にもたくさんあります。単純なファイル リーダー/ライターを作成して、ある種のインベントリ/計算スクリプトを作成してみることができます。ソケット API は、既に C に慣れている初めてのユーザーにとって非常に見慣れないものに見えるため、これらをお勧めします。

于 2013-01-07T17:33:13.490 に答える
2

html、js、css、および画像はブラウザによって処理されます。サーバーはコンテンツを配信するだけです。これが独自のダイナミクスを持たない限り、処理できます。残りの話は、C 言語とはあまり関係ありません。

于 2013-01-07T17:33:03.380 に答える