QA@IT

VB.NETのFTPのファイルアップロードの仕組み

10046 PV

以下のサイトを参考にFTPのアップロード機能を実装しています

https://dobon.net/vb/dotnet/internet/ftpwebrequest.html#uploadfile

実際にFTPサーバへファイルをアップロードしているのは
以下の部分だと思うのですが、具体的にどのようなことを
やっているのでしょうか

1023byteは何を意味しているのでしょうか?

Dim buffer(1023) As Byte
While True
Dim readSize As Integer = fs.Read(buffer, 0, buffer.Length)
If readSize = 0 Then
Exit While
End If
reqStrm.Write(buffer, 0, readSize)
End While

回答

具体的にどのようなことをやっているのでしょうか

ファイルから指定バイト分読み込んで、それを送信用のストリームに書き込む(送信処理の実体)ということを繰り返しています。ファイルから読み込んだバイト数が0になるまでこの動作を繰り返すことによって、ファイル全体を送信し終える、ということです。

1023byteは何を意味しているのでしょうか?

一度に読み込むバイト数を1024バイトに制限しています(VB.netの配列は0~添え字の上限値)。

この数値を増やすと一度にストリームに書き込むサイズが増えますが、環境によっては(同時起動しているアプリの数が多いなど)メモリを圧迫したりする可能性もあるので、小刻みにファイルから読んで送信する、を繰り返す方が負荷が少ないです。

なので、あまりサイズを小さくしすぎると、読み込んだり送信したりする処理のオーバーヘッドが大きくなりすぎて効率が悪くなる、ということで良さそうなサイズ1024バイトにしているのだと思います。

イメージとしては地面に穴を掘って、掘った土を別の場所に運ぶ作業を考えてみると判りやすいと思います。
一度に何十キロも土を運ぼうとすると、かなりしんどい作業になると思います。これが1~2キロだと作業自体は楽ですが、何度も往復する必要があります。決まった量の土を運ぶのに、どういうやり方が一番早くできるかは環境(土の量や、運ぶ距離、一度に持てる体力)などで変わります。

同じようにシステムの仕様などで厳密に許される時間が決まっているのであれば、最も効率の良いサイズを計測して決めるようなことも必要になってくると思います。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。