在C#中,您可以使用Socket類來實現文件傳輸。以下是一個基于Socket的簡單文件傳輸示例:
1. 客戶端代碼
客戶端代碼使用Socket類連接服務器,讀取文件內容并發送到服務器。以下是一個客戶端代碼示例:
//csharp
using System.IO;
using System.Net;
using System.Net.Sockets;
public static void Main()
{
var client = new TcpClient();
client.Connect("localhost", 8080);
using var stream = client.GetStream();
using var fileStream = File.OpenRead("path_to_file");
var bytesToSend = new byte[fileStream.Length];
fileStream.Read(bytesToSend, 0, bytesToSend.Length);
stream.Write(bytesToSend, 0, bytesToSend.Length);
client.Close();
}
在此示例中,我們首先創建一個TcpClient并連接到服務器。然后,我們使用TcpClient.GetStream方法獲取用于讀寫數據的NetworkStream。接下來,我們打開要傳輸的文件并讀取其內容。最后,我們將文件內容寫入NetworkStream中并關閉TcpClient。
2. 服務器端代碼
服務器端代碼監聽客戶端連接,并接收客戶端發送的文件內容。以下是一個服務器端代碼示例:
//csharp
using System.IO;
using System.Net;
using System.Net.Sockets;
public static void Main()
{
var listener = new TcpListener(IPAddress.Any, 8080);
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
var stream = client.GetStream();
using var memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
var bytesReceived = memoryStream.ToArray();
File.WriteAllBytes("path_to_save_file", bytesReceived);
client.Close();
}
}
在此示例中,我們首先創建一個TcpListener,并開始監聽來自客戶端的連接。然后,我們使用TcpListener.AcceptTcpClient方法等待連接,并使用TcpClient.GetStream方法獲取用于讀寫數據的NetworkStream。接下來,我們讀取NetworkStream中的數據并將其保存到內存流中。最后,我們將內存流的內容寫入磁盤,并關閉TcpClient。
上述示例代碼只是演示了如何使用Socket和NetworkStream類進行文件傳輸,實際應用中還需要考慮文件大小、網絡中斷、傳輸速度等因素,并進行相應的處理。在實際應用中,您可能還需要使用線程池或異步編程模型來處理多個并發傳輸請求,以提高應用程序的性能和可擴展性。
該文章在 2023/11/1 9:57:26 編輯過