ページ 11

HTMLサーバについて

Posted: 2010年11月14日(日) 18:13
by コンタ:C言語勉強中
はじめまして。

自宅学習でHTMLサーバを作成しています。
開発環境VC++2008で言語はCです。
WinSockでHTTP通信を行うプログラムを作成していますが、詰まってしまったのでご相談させて
頂きたく質問させていただきます。

現在、参考書を参考にソースを作成していますが、HTTPレスポンスで”HTTP/1.1 400 Bad Request”
とステータスコードが返ってきてしまいます。この理由がわかりません。
期待するステータスコードは、200 OKです。
※プロキシ サーバーを経由する場合は外部のサーバーには接続できないそうですが、自宅からインターネット※に接続するユーザーはプロキシ サーバーは使用しないので関係ないと思うのですが。。。

また、動作環境として、サーバ名、ポート番号、URLを(Cドライブの)設定ファイルから読み込むようなプログラムへ改良したいのですが、 実現方法が分かりませんので、ヒントを教えていただきたいです。
仕様としては、HTTPサーバのみ立ち上げて、要求されたファイルを送信するだけのものを考えています。
現在のプログラムを添付もします。

すいませんが、よろしくお願いします。

Re:HTMLサーバについて

Posted: 2010年11月14日(日) 22:01
by コンタ:C言語勉強中
デバッグしていたら、GETリクエスト送信処理のsend()に渡すリクエスト行で文字列コピーが出来ておらず、
"%s"のまま渡していました。下記の様に修正することでステータスコードが200 OKで返ることが出来ました。
◆修正前
wsprintf(szStr, "GET %s HTTP/1.1\r\n\r\n", szURL);
◆修正後
sprintf(szStr, "GET %s HTTP/1.1\r\n\r\n", szURL);

しかし、wsprintf()で"%s"が変換されない理由が分かりません。
環境のせいなのでしょうか??

Re:HTMLサーバについて

Posted: 2010年11月14日(日) 22:39
by mila
おそらくプロジェクトの文字セットの設定が
Unicode文字セットになっているためでしょう。
マルチバイト文字セットに変更して試してみてください。