# porter/src/tech-sample/tcpServer/tcpServer.c

# 1 ファイル

## 1.1 porter/src/tech-sample/tcpServer/tcpServer.c

TCP サーバーサンプル共通実装。

プラットフォーム共通の処理を実装します。

- handle_client_session() : TCP 通信メインループ (受信 → printf → 送信)
- parse_args() : コマンドライン引数解析
- main() : エントリーポイント

プラットフォーム差異は tcpServer.h のマクロ (ClientFd / client_recv / client_send / client_close / get_pid) および各プラットフォームファイルが実装するフック関数 (platform_init / platform_cleanup / dispatch_internal_args) で吸収します。

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.0.0

### 1.1.3 日付

2026/03/17

### 1.1.4 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

# 2 関数

## 2.1 handle_client_session

    void handle_client_session ( ClientFd fd )

TCP 通信メインループ (デフォルト実装)。

受信したデータをそのまま返します。クライアントが切断すると戻ります。 ソケットは本関数内で閉じます。fork モード・prefork モード共用。

### 2.1.1 引数

- fd [in] クライアントソケット。

## 2.2 parse_args

    static void parse_args ( int argc, char *argv[], ServerMode *mode, int *port, int *workers, int *conns_per_worker )

コマンドライン引数を解析します。

`--mode fork|prefork` / `--port <num>` / `--workers <num>` / `--conns-per-worker <num>` を解析します。 内部起動引数 (`--child`, `--worker`) は dispatch_internal_args() で処理済みの ため、本関数では無視します。

### 2.2.1 引数

- argc [in] 引数の数。
- argv [in] 引数の配列。
- mode [out] 動作モード (MODE_FORK / MODE_PREFORK)。
- port [out] 待ち受けポート番号。
- workers [out] ワーカー数。
- conns_per_worker [out] 1 ワーカーあたりの同時接続数。

## 2.3 main

    int main ( int argc, char *argv[] )

メインエントリーポイント。

1. platform_init() でプラットフォーム初期化。
2. dispatch_internal_args() で内部起動引数 (–child / –worker) を確認。 処理済みの場合は platform_cleanup() して終了します。
3. parse_args() でモード・ポート・ワーカー数を解析。
4. 指定されたモードでサーバーを起動します。

### 2.3.1 引数

- argc [in] コマンドライン引数の数。
- argv [in] コマンドライン引数の配列。

### 2.3.2 戻り値

正常終了時は 0 を返します。