如何通过TCP接收使用套接字发送的文件.FileSend方法
本文关键字:文件 方法 FileSend 套接字 TCP 何通过 | 更新日期: 2023-09-27 18:19:07
我有一个客户端应用程序和一个服务器应用程序。
我想从一台机器发送一个文件到另一台机器,所以它似乎是套接字。FileSend方法正是我要找的。
但是由于没有FileReceive方法,我应该在服务器端做什么来接收文件?(我的问题是,因为文件将有一个可变的大小,并将大于任何缓冲区,我可以创建GB顺序…)
在服务器端,您可以使用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发送二进制数据进行了优化。与依赖非常低级的套接字相比,它是一个更健壮的解决方案。您将不得不处理诸如文件名,大概是元数据,…
您需要使用Socket。接收或Socket。BeginReceive