На стороне сервера вы можете использовать TcpListener , и, как только клиент подключится, прочитайте поток кусками и сохраните его в файл:
class Program
{
static void Main()
{
var listener = new TcpListener(IPAddress.Loopback, 11000);
listener.Start();
while (true)
{
using (var client = listener.AcceptTcpClient())
using (var stream = client.GetStream())
using (var output = File.Create("result.dat"))
{
Console.WriteLine("Client connected. Starting to receive the file");
// read the file in chunks of 1KB
var buffer = new byte[1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
}
}
}
Что касается отправкиобеспокоен тем, что вы можете взглянуть на пример, приведенный в документации метода SendFile .
При этом вы также можете взглянуть на более надежное решение, которое заключается в использовании WCF.,Существуют протоколы, такие как MTOM, которые специально оптимизированы для отправки двоичных данных по HTTP.Это гораздо более надежное решение по сравнению с использованием сокетов с очень низким уровнем.Вам придется обрабатывать такие вещи, как имена файлов, предположительно метаданные, ... вещи, которые уже учтены в существующих протоколах.