C#使用TCP/IP传输大文件方法

   2024-09-30 4880
核心提示:在C#中,使用TCP/IP协议传输大文件可以通过分块读取和发送文件数据的方式实现。以下是一个简单的示例,展示了如何使用TCP/IP在C#

在C#中,使用TCP/IP协议传输大文件可以通过分块读取和发送文件数据的方式实现。以下是一个简单的示例,展示了如何使用TCP/IP在C#中传输大文件:

首先,我们需要创建一个TCP服务器:

using System;using System.IO;using System.Net;using System.Net.Sockets;class TcpServer{    public static void StartListening(int port)    {        TcpListener server = null;        try        {            server = new TcpListener(IPAddress.Any, port);            server.Start();            Console.WriteLine("Server is listening on port " + port);            while (true)            {                Console.WriteLine("Waiting for a client to connect...");                TcpClient client = server.AcceptTcpClient();                Console.WriteLine("Client connected.");                NetworkStream stream = client.GetStream();                // Read file and send it in chunks                string fileName = "largefile.txt";                using (FileStream fs = File.OpenRead(fileName))                {                    byte[] buffer = new byte[1024 * 1024]; // 1MB chunk size                    int bytesRead;                    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)                    {                        stream.Write(buffer, 0, bytesRead);                    }                }                Console.WriteLine("File sent.");                client.Close();            }        }        catch (Exception e)        {            Console.WriteLine("Error: " + e.Message);        }        finally        {            if (server != null)            {                server.Stop();            }        }    }}

接下来,我们需要创建一个TCP客户端来接收文件:

using System;using System.IO;using System.Net.Sockets;class TcpClient{    public static void Connect(string server, int port)    {        try        {            TcpClient client = new TcpClient(server, port);            NetworkStream stream = client.GetStream();            // Receive file in chunks and write it to disk            string fileName = "received_largefile.txt";            using (FileStream fs = File.Create(fileName))            {                byte[] buffer = new byte[1024 * 1024]; // 1MB chunk size                int bytesRead;                while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)                {                    fs.Write(buffer, 0, bytesRead);                }            }            Console.WriteLine("File received.");            client.Close();        }        catch (Exception e)        {            Console.WriteLine("Error: " + e.Message);        }    }}

最后,我们可以在主程序中启动服务器和客户端:

using System;class Program{    static void Main(string[] args)    {        // Start server        int port = 12345;        TcpServer.StartListening(port);        // Connect client        string server = "127.0.0.1";        TcpClient.Connect(server, port);    }}

这个示例中,服务器将大文件分成1MB大小的块,并通过网络流发送给客户端。客户端接收这些块并将它们写入到本地文件系统中。这种方法可以有效地传输大文件,而不会消耗大量内存。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号