Необходимо передать сохраненную веб страницу на клиент:
Пытаюсь разбить и передать файл по-частям:
Сервер:
private static void SendFile()
{
// Создаем файловый поток и переводим его в байты
Byte[] bytes = new Byte[UdpFileServer.fs.Length];
Console.WriteLine("Отправка файла размером " + UdpFileServer.fs.Length + " байт");
UdpFileServer.fs.Read(bytes, 0, bytes.Length);
try
{
if (bytes.Length > 8192)
{
int offset = 0;
int iterations = bytes.Length / 8192;
Byte[][] arr = new Byte[iterations][];
for (int i = 0; i < iterations; i++)
{
arr[i] = new Byte[8192];
for (int j = 0; j < 8192; j++)
{
arr[i][j] = bytes[j + offset];
}
offset += 8192;
}
for (int i = 0; i < iterations; i++)
{
Byte[] data = arr[i];
UdpFileServer.sender.Send(data, 8192, UdpFileServer.endPoint);
}
}
//// Отправляем файл
}
catch (Exception eR)
{
Console.WriteLine(eR.ToString());
}
finally
{
// Закрываем соединение и очищаем поток
UdpFileServer.fs.Close();
UdpFileServer.sender.Close();
}
Console.WriteLine("Файл успешно отправлен.");
Console.Read();
}
Клиент:
public static void ReceiveFile()
{
try
{
Console.WriteLine("-----------*******Ожидайте получение файла*******-----------");
int iterations = (int)fileDet.FILESIZE / 8192;
Byte[][] data = new Byte[iterations][];
int k = 0;
fs = new FileStream("temp." + fileDet.FILETYPE, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
for (int i = 0; i < iterations; i++)
{
data[i] = new Byte[8192];
data[i] = receivingUdpClient.Receive(ref RemoteIpEndPoint);
fs.Write(data[i], 0, data.GetLength(0));
//k = 8192 * i;
}
// Получаем файл
// Преобразуем и отображаем данные
Console.WriteLine("----Файл получен...Сохраняем...");
// Создаем временный файл с полученным расширением
Console.WriteLine("----Файл сохранен...");
}
catch (Exception eR)
{
Console.WriteLine(eR.ToString());
}
finally
{
fs.Close();
receivingUdpClient.Close();
Console.Read();
}
}
- в итоге, клиент - просто виснет на сообщении
Console.WriteLine("-----------*******Ожидайте получение файла*******-----------");
- exception - а - нет.
Так же, возник вопрос насчет записи в файл в цикле:
fs.Write(data[i], 0, data.GetLength(0));
//k = 8192 * i;
- вместо 0 - указывал смещение k, но выходил за границы массива.
P.S - К сожалению, пока что, не имею теоретических знаний по части работы сети, да и в c# - с этим никогда не работал, но срочно появилась необходимость сделать "здесь и сейчас".