Remote Patcher



Remote Patcher (Version: 1.0.0 - 2002/06/09)

(↓以下、"Readme.txt"のコピーです)

【概要】
3時間くらいかけて誰かからDLしたファイルが壊れていた!こいつはショーック!
でも、また3時間かけてDLするのは御免だ!!
・・・という人のために作ってみました。

元ファイルの所持者側(送信側:以下A)と、
ファイルをDLしたけど壊れていた側(受信側:以下B)の双方で
対象ファイルを一定サイズで分割してCRCを求め、比較。
壊れている部分だけを送信しなおしてファイルを修復する、
そんなアプリです。

Bのファイルサイズが不足していた場合は不足分のデータも転送します。
(レジュームも同時に行える、ということです)

また、あるファイルの所持者(送信側:以下A)から
ファイルを所持していない人間(受信側:以下C)に通常のファイル転送もできます。


【製作環境】
Windows2000。他のOSでの動作は未確認です。
今回はVC++で作ってみましたが、ランタイムとか要るんでしょうか?
詳しい方、教えてください。


【制限?】
A、Bともにファイアウォール内部にいる場合は使えない(たぶん)
2GBを超えるファイルは修復できない(たぶん)


【設定項目】
1) Your File:
自分が持っているファイルが
・正しいファイルであれば "Original(correct)"
・破損している(と思しき)ファイルであれば "Copy(broken)"
・そもそもファイルを持っていない(受け取るだけ)であれば "Nothing"
を選んでください。それぞれ上の説明のA、B、Cに当たります。

2) File:
AまたはBの場合であれば「参照」から対象ファイルを選びます。
Cであれば「参照」からフォルダ選択ダイアログボックスが開くので、
そこで受信ファイルを保存したいフォルダを選択します。

3) You act as: 
自分がクライアントとして動作するか、サーバとして動作するかを選びます。
(どちらか一方がサーバ、もう一方がクライアントになります)
デフォルトでは送信側(A)がサーバ、受信側(B or C)がクライアントですが、
送信側(A)がファイアウォール内でありサーバとして機能できない場合は、
受信側(B or C)はサーバ、送信側(A)はクライアントに設定してください。

4) Port:
データ転送に用いるポート番号を指定します。
クライアント/サーバが同じ番号を指定する必要があります。
デフォルトはなんとなく46699になっていますが、深い意味はありません。
同時に複数のファイルを修復/転送したい場合はポート番号が重ならないように
してください。

5) Remote IP:
自分がクライアントの場合は、この欄にサーバ(相手側)のグローバルIPアドレスを
指定します。(自分がサーバであれば設定する必要はありません)
サーバ側の人間はチャットなりメールなりを使用して、自分のIPを相手に伝える
必要があります。
自分のIPは "Your IP" 欄に表示されるようになっていますが、
LANを組んでいるとローカルIPが表示されるのであまり参考になりません。


【操作】
上記の設定を済ませ、Startボタンを押します。
サーバ側がSartして接続待ち状態になってから、
クライアント側がStartして接続した方が良いでしょう。


【補足事項】
「Devide Size」というものがありますが、
CRC計算する際にどの程度のサイズで分割して計算を行うか、という値です。
128〜255個に分割するように自動的に設定されます。
CRCを比較した結果、Remote Patcherが「もっと分割していいだろ」と思ったら
勝手に再分割して再度CRCを計算するようになっています。

CRCの情報はlog_client.dat、log_server.datというファイルに書き込まれます。
もし動作不良があった場合は作者に送ってもらえると何か解決するかもしれません。


【注意事項】
上記の制限が(たぶん)ある。
使っているCRCがあまり一般的なものではない?

といったところです。
滅多に使う機会がないソフトでしょうから、
もし使ってみる機会があればなるべく動作報告&感想・要望をお願いします。


【履歴】
・Beta Version(2001/11/22)
 とりあえず公開。
 動作報告や要望を聞いてからいろいろ改良を加えていこうかと。

・Beta2(2001/12/21)
 転送の安全性を高めた。
 サイズ不足部分の転送も行えるようにした。
 アイコンもつけた。

・Vesion 1.0.0(2002/06/09)
 クライアント/サーバのどちらとして動作するか自分で選択できるようにした。
 ポート番号も自分で選べるようにした。
 普通にファイルを転送できるようにした。
 その他バグや操作性の修正。


【いつものあとがき?】
「こういうソフトって、誰かが既に作っているんじゃ・・・?」
いつも、アプリを作りながらそんなことを考えたりします。
その手の情報があれば教えてください。