I get the following error on the second iteration of my loop:
Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
and this is my loop
FileStream fs = new FileStream("D:\\06.Total Eclipse Of The Moon.mp3", FileMode.Open);
byte[] _FileName = new byte[1024];
long _FileLengh = fs.Length;
int position = 0;
for (int i = 1024; i < fs.Length; i += 1024)
{
fs.Read(_FileName, position, Convert.ToInt32(i));
sck.Client.Send(_FileName);
Thread.Sleep(30);
long unsend = _FileLengh - position;
if (unsend < 1024)
{
position += (int)unsend;
}
else
{
position += i;
}
}
fs.Close();
}
fs.Length = 5505214
On the first iteration, you’re calling
That’s fine (although why you’re calling
Convert.ToInt32on anint, I don’t know.)On the second iteration, you’re going to call
which is trying to read into the
_FileNamebyte array starting atposition(which is non-zero) and fetching up to 2048 bytes. The byte array is only 1024 bytes long, so that can’t possibly work.Additional problems:
usingstatement, so on exceptions you’ll leave the stream openRead, which means you don’t know how much of your buffer has actually been readYour code should probably look more like this: