TCPを利用したファイル転送プログラム(ftプログラムとshareプログラム)を実装した。
クライアントが任意のファイルをサーバへ送信するファイル転送プログラム
-
サーバの機能 (ft_server.c)
- クライアントを待ち受け、接続があれば、子プロセスを作成する。
- ファイル名、ファイルサイズ、ファイルデータを順に受信し、それぞれACKを返す。
- クライアントから終了コマンドを受信すると、子プロセスを終了する。
-
クライアントの機能 (ft_client.c)
- scanf()でファイル名を受け取り、ファイル名、ファイルサイズ、ファイルデータを順にサーバへアップロードする。この時、サーバからそれぞれのACKを受信する。
- 複数のファイルをアップロードできるように、ループ文でユーザからのコマンドを受け付ける。この時、TCPコネクションは切断しない。
- 終了コマンドが入力されると、サーバに終了コマンドを送信し、クライアントプログラムを終了する。
- バッファサイズの上限は64バイトであり、一度にファイル全体を読み込んでデータを送信できない。そのため、ファイルデータを64バイトずつ読み込み、送信する。

符号化・復号化を組み込み、柔軟で保守性の高いファイル転送プログラム
-
サーバの機能 (share_server.c)
- ftプログラムを拡張し、クライアントからのリクエストに応じて、ファイルの送受信を決定する。
-
クライアントの機能 (ft_client.c)
- ターミナルからのコマンドを受け付け、ファイルの送受信を決定する。

- makeとgccをインストール
- Makefileがあるディレクトリでmakeコマンドを実行
- サーバプログラムを実行後、別のターミナルでクライアントプログラムを実行する。以下にUbuntuでの実行例を示す。
ターミナル1:./share_server
ターミナル2:./share_client
ターミナル3:./share_client