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 を返します。