您好,登錄后才能下訂單哦!
在C#中,你可以使用System.Net.Sockets
命名空間下的類來實現跨平臺的文件傳輸。這里是一個簡單的示例,展示了如何使用TcpClient
和NetworkStream
進行文件傳輸。這個示例僅適用于TCP連接,但你可以根據需要調整為使用其他協議,如UDP。
首先,創建一個TcpClient
實例并連接到遠程服務器:
using System;
using System.IO;
using System.Net.Sockets;
namespace FileTransfer
{
class Program
{
static void Main(string[] args)
{
string serverAddress = "127.0.0.1"; // 替換為你的服務器地址
int serverPort = 12345; // 替換為你的服務器端口
using (TcpClient client = new TcpClient(serverAddress, serverPort))
{
NetworkStream stream = client.GetStream();
// 在這里實現文件傳輸邏輯
}
}
}
}
接下來,實現文件傳輸邏輯。這里我們將文件分為多個部分進行傳輸,每個部分的大小為固定值(例如1KB):
const int bufferSize = 1024;
const int filePartCount = 10; // 根據文件大小調整
string filePath = "path/to/your/file"; // 替換為你要傳輸的文件路徑
string fileName = Path.GetFileName(filePath);
byte[] fileBuffer = new byte[bufferSize];
int bytesRead;
int filePartIndex = 0;
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
while ((bytesRead = fileStream.Read(fileBuffer, 0, bufferSize)) > 0)
{
for (int i = 0; i < bytesRead / bufferSize; i++)
{
byte[] data = new byte[bytesRead];
Array.Copy(fileBuffer, i * bufferSize, data, 0, bytesRead);
stream.Write(data, 0, data.Length);
}
filePartIndex++;
}
}
在接收端,你需要實現一個類似的過程來接收文件數據并將其寫入磁盤:
string receivedFilePath = "path/to/received/file"; // 替換為你要保存接收文件的路徑
using (TcpClient client = new TcpClient(serverAddress, serverPort))
{
NetworkStream stream = client.GetStream();
using (FileStream fileStream = new FileStream(receivedFilePath, FileMode.Create))
{
byte[] buffer = new byte[bufferSize];
int bytesReceived;
while ((bytesReceived = stream.Read(buffer, 0, buffer.Length)) > 0)
{
fileStream.Write(buffer, 0, bytesReceived);
}
}
}
這個示例僅用于TCP連接,但你可以根據需要調整為使用其他協議,如UDP。請注意,這個示例沒有實現完整的錯誤處理和安全性措施,實際應用中請確保進行適當的錯誤處理和數據加密。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。