Skip to content

shonakam/microcurl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

microcurl

概要

microcurlは、標準C言語とソケットAPIのみを使用して実装された、最小限の機能を持つコマンドラインHTTP GETクライアントです。cURLの基本的な動作を学習する目的で作成されました。

指定されたURLにHTTP GETリクエストを送信し、サーバーからのレスポンスを標準出力に表示します。


処理の流れ

graph TD
    A[URL文字列] --> B[URL解析<br/>host, port, pathを取得];
    B --> C[名前解決<br/>host → IPアドレス];
    C --> D[ソケット作成 & 接続];
    D --> E[HTTP GETリクエスト生成 & 送信];
    E --> F[HTTPレスポンス受信];
    F --> G[レスポンスを標準出力に表示];
Loading

特徴

  • 外部ライブラリに依存せず、基本的なCの関数群で実装
  • HTTP/1.0 GETリクエストに対応
  • URLをホスト名、ポート、パスに分解して処理
  • valgrindでのチェックを想定した、クリーンなリソース管理

必要要件

  • Cコンパイラ (例: gcc, clang)
  • make

ビルド方法

リポジトリをクローンし、make コマンドを実行してください。

git clone [email protected]:shonakam/microcurl.git
cd microcurl
make

これにより、プロジェクトのルートディレクトリに microcurl という実行ファイルが生成されます。


使い方

実行ファイルに引数として取得したいURLを渡します。

./microcurl <URL>

実行例:

# example.comのコンテンツを取得
./microcurl http://example.com

# ローカルで起動しているサーバーにリクエスト
./microcurl http://localhost:8080

メモリリークのチェック

valgrind を使ってメモリリークや不正なメモリアクセスがないかを確認できます。

make valgrind

プロジェクト構成

.
├── Makefile
├── inc/
│   ├── microcurl.h      # メインの構造体やプロトタイプ宣言
│   └── util.h           # ユーティリティ関数のプロトタイプ宣言
└── src/
     ├── microcurl.c        # main関数、全体的な処理の流れ
     ├── parse_url.c      # URLのパース処理
     ├── resolve_host.c   # ホスト名の名前解決
     ├── socket_connect.c # ソケット接続処理
     ├── send_request.c   # HTTPリクエストの作成と送信
     ├── recv_response.c  # HTTPレスポンスの受信
     └── util/            # 自作の標準ライブラリ風関数群
         ├── reb_memcpy.c
         ├── reb_memset.c
         ├── reb_putendl_fd.c
         ├── reb_strdup.c
         ├── reb_strlen.c
         └── reb_strncmp.c
  • inc/: プロジェクト全体のヘッダーファイルを格納します。
  • src/: 機能ごとに分割されたソースコードを格納します。
  • src/util/: libcの標準関数を再実装したユーティリティ関数群です。

作者

  • shonakam

About

ジサクカール(自作 HTTP クライアント / GET のみ対応)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published