Если я правильно понял вопрос, вы хотите разделить существующий массив на массивы (максимум) 100k элементов и поместить эти массивы в список массивов?
ArrayList Split(byte[] filebytes, int range)
{
range *= 1000;
int pos = 0;
int remaining;
ArrayList result = new ArrayList();
while ((remaining = filebytes.Length - pos) > 0)
{
byte[] block = new byte[Math.Min(remaining, range)];
Array.Copy(filebytes, pos, block, 0, block.Length);
result.Add(block);
pos += block.Length;
}
return result;
}
Измените 1000 на 1024, если это было вашим намерением:)
Я не могу придумать причину, почему вы хотели бы сделать что-то подобное, хотя. Загрузка одного огромного массива байтов и , а затем разбиение на блоки довольно неэффективно, если бы вы могли разбить их на блоки по 100 Кб, читая ваши данные.
Что касается вашего комментария: отправка всего файла в сокет должна быть намного проще, чем вы это делаете. У меня нет способа тестирования, но это должно работать в .NET 1.1.
private void SendFileToSocket(string fileName)
{
Socket socket = new Socket(
AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
using (socket)
{
socket.Connect("server.domain.com", 12345);
using (NetworkStream networkStream = new NetworkStream(socket))
using (FileStream fileStream = File.OpenRead(fileName))
{
byte[] buffer = new byte[32768];
while (true)
{
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
networkStream.Write(buffer, 0, bytesRead);
}
}
}
}
Размер буфера немного произвольный, но он должен быть достаточно большим.