Skip to content

yas-2023/cszap_simple_http_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C言語 HTTP四則演算サーバー 概要

  • プロジェクトの目的

    • C言語と標準ライブラリ(システムコール)のみを使用したHTTPサーバーの実装
    • 動的メモリ管理とエラーハンドリングの学習
    • クライアントからの四則演算リクエストの処理
  • 動作環境

    • OS: Linux または macOS(Unix系)
    • コンパイラ: GCC
    • 依存: 標準ライブラリのみ(外部ライブラリ不使用)

ファイル構成

  • simple_server.c
    • ポート8080で待機
    • HTTPリクエストの解析と計算処理
    • 結果のレスポンス送信
  • simple_client.c
    • サーバーへの接続
    • 計算クエリ(例: 100+50*2)の送信
    • 結果の受信と表示

サーバー仕様 (API)

  • エンドポイント
    • メソッド: GET
    • パス: /calc
    • クエリパラメータ: query=[数式]
    • 例: GET /calc?query=10+20-5
  • 計算ロジック
    • 対応演算子: +, -, *, /
    • 計算順序: 左結合(左から右へ順に計算)
    • 注意: 数学的な優先順位(掛け算優先など)は適用されない
  • レスポンス
    • 成功時: ステータス 200 OK、ボディに計算結果(数値)
    • 失敗時: ステータス 404 Not Found、ボディにエラーメッセージ

実装

  • 通信フロー (Socket通信)
    • socket(): ソケット作成
    • bind(): ポート8080への紐付け
    • listen(): 接続待ち受け
    • accept(): 接続確立
    • recv() / send(): データ送受信
  • メモリ管理
    • 動的確保: malloc を使用し、リクエストごとに必要なメモリをヒープ領域に確保
    • 解放: 処理終了後、必ず free を呼び出してメモリリークを防止
  • エラー処理
    • 全てのシステムコールの戻り値をチェック
    • 失敗時は perror で原因を表示し、安全に終了または切断

実行手順

  1. コンパイル
    • gcc simple_server.c -o simple_server.out
    • gcc simple_client.c -o simple_client.out
  2. サーバー起動 (ターミナル1)
    • ./simple_server.out 8080
  3. クライアント実行 (ターミナル2)
    • ./simple_client.out 127.0.0.1 8080 "10+20*3" # IPv4
    • ./simple_client.out ::1 8080 "10+20*3" # IPv6

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages