【アドベントカレンダー】C言語でサーバサイドごっこしてみる。MakerBlogナビゲーションを切り替えHOMEAdobeArduinoProrammingMakerBlogについてホームページ【アドベントカレンダー】C言語でサーバサイドごっこしてみる。2019年12月20日アドベントカレンダー企画みんな大好きアドベントカレンダーの季節になりましたね(12月21日公開)。この記事はOthloTechのアドベントカレンダー企画とも紐づけて書いています!他の記事も結構面白いものが多かったので、見てみてください。C言語でもサーバサイドしたいと思っている方多いのではないでしょうか?いや、多いですよね。PHPに限らず、RubyやPython他、様々な言語で盛り上がっているサーバサイド界隈ですが、個人的に一番好きなC言語でWebのサーバサイドを行いたいなと思いました。やってみる今回はひとまずできるのかなー?って確認なので、実用面とかはあまり考えないでWebアプリケーションフレームワークライクな振舞いをC言語で実装してみたいと思います。今回実装する機能はざっくりとこんな感じです。HTTPサーバHTMLの出力ルーティングひとまず、時間の関係上こんな感じの機能もどきを形だけ再現してみます。以下の環境でひとまずテストは行います。2015尚、今後はLinuxのCentOS当たりで開発をしようかなと思っています。HTTPサーバをC言語で建ててみるってのに関しては過去にソケット通信をしていたのでそのコードを流用します。ソケット通信の記事はこちら⇒【Socket通信】WindowsPC同士でサーバとクライアントで通信!ところどころ改変はしているのですが、ひとまず重要なのはHTTPヘッダを返すってところです。クライアント側の接続に対して「HTTPで通信するよ!」ってのを送って教えてあげよう!ってノリです。0);場所としてはここです。char型で送ってください。charなので文字化けしてしまいます。最初気にせずchar型で送信したら文字化けしました。この1文で「今からHTTP通信でHTMLを送るぜ!」ってのを言ってます。HTMLを表示してみるみんな大好き、HelloWorldしてみましょう。HTMLファイルを作って1行ずつ送っても良いのですが、今回は面倒なので簡単に直接文章を送りたいと思います。WSAGetLastError());break;}予め作っておいたhtml配列にhtmlを格納して、そのまま送信したらブラウザにHTMLが出力されます。ルーティングしてみる。これではサーバのどこにアクセスしても同じHTMLが出力されてしまいます。そこで、ルーティングします。ルーティングとは、特定のアドレスにアクセスした際にその目的のアドレスの結果を出力するって感じのやつです。知らない人はちゃんと調べた方がいいです。j];}break;}}このコードでGET/POSTからの値をpath変数に格納します。path変数って言うとなんだか紛らわしいので命名はまた改めて変えておきます。WSAGetLastError());break;}こっちでルーティング。あるフレームワークみたいに綺麗じゃなく、単なるif文で申し訳ないですが、こんな感じ。switchでいいような気もするけど、ひとまずいいや。これを実行すると、http://localhost:8000/page1に接続するとページが表示され、アンカーからhttp://localhost:8000/page2と行き来できます。Found」と言われます。一応他にもところどころできた機能もあるものの、今回の記事はここまでにしておきます。0;}何か、気になる箇所等あれば、是非ご連絡いただければと思います1今後はLinuxでしっかりとC言語のWebアプリケーションフレームワーク開発を進めていくつもりなので、また進展があればブログやTwitterで公開したいと思います。コメントをキャンセルメールアドレスが公開されることはありません。新しい投稿をメールで受け取るご意見、ご感想をお願いします。】Web画面で色を指定してJavaScriptの変数に受け取る【C言語】ヘックスダンプするだけのプログラム。【C言語】画像の二値化をしてみる【アドベントカレンダー】C言語でサーバサイドごっこしてみる。【C言語】ヘックスダンプするだけのプログラム。