argius note

プログラミング関連

簡易ファイル転送サーバ&クライアント

インターネットに繋がらない、P2Pのローカルネットワークで、フロッピー以外の書き込み可能メディアが使えないPC(転送元)上にある、サイズが巨大なファイルを転送したいのだが、ファイル共有が上手くいかない。
最初は、転送先のinetdでFTPを使えば良いじゃないか、と思いついたのだが、転送元から転送先のPCに対しては、PINGすら飛ばない。逆はOKなのだが、どうもネットワークは普段やってないものだからすぐ忘れてしまうので、どうすれば良いか皆目見当が付かない。
Eclipseがあるので、簡単なファイル転送サーバを作ってみることにした。幸いなことに、書き溜めておいた自作APIがちょうど使えるので、割と短時間で作ることが出来た。さっそくテスト。ちなみに、仕様は↓こんな感じです。

  1. クライアントは、「コマンド(今回はGET固定)」「サーバのホスト名またはIPアドレス」「ホストにある取得したいファイルのローカルパス」を引数として指定。
  2. クライアントからサーバに対して、テキスト形式で「コマンド」「ホストにある取得したいファイルのローカルパス」の2行を送信。
  3. サーバは、コマンドに従って、クライアントにデータを送信する。今回はGETのみなので、送信された自分のローカルにあるファイルをクライアントに対して送信する。
  4. クライアントは、受信したバイナリデータを「ホストにある取得したいファイルのローカルパス」のファイル名で、カレントディレクトリに保存する。

結果として、2GBの1ファイルを、約110分で転送できた。