您好!您提到的“点对点文件传输c#”是一个涉及到文件传输和编程的问题。在这里,我将为您提供一个简单的C#代码示例,用于实现点对点文件传输。
首先,我们需要了解一下点对点文件传输的基本概念。点对点文件传输是指在不需要中央服务器的情况下,直接在两台计算机之间进行文件传输。这种方式可以减少服务器的负担,提高传输效率。
以下是一个简单的C#代码示例,用于实现点对点文件传输:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
class FileTransfer
{
static void Main()
{
// 创建一个TCP/IP套接字
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定IP地址和端口号
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 12345;
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port);
socket.Bind(localEndPoint);
// 监听连接请求
socket.Listen(10);
Console.WriteLine("等待客户端连接...");
// 接受客户端连接请求
Socket clientSocket = socket.Accept();
Console.WriteLine("客户端已连接。");
// 发送文件名和文件大小
string fileName = "test.txt";
FileInfo fileInfo = new FileInfo(fileName);
long fileSize = fileInfo.Length;
byte[] fileNameBytes = System.Text.Encoding.UTF8.GetBytes(fileName);
byte[] fileSizeBytes = BitConverter.GetBytes(fileSize);
clientSocket.Send(fileNameBytes);
clientSocket.Send(fileSizeBytes);
// 发送文件内容
using (FileStream fileStream = File.OpenRead(fileName))
{
byte[] buffer = new byte[1024];
int bytesRead;
long totalBytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
totalBytesRead += bytesRead;
Console.WriteLine("已发送 {0} / {1} 字节", totalBytesRead, fileSize);
clientSocket.Send(buffer, bytesRead, SocketFlags.None);
}
}
// 关闭套接字
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
socket.Close();
}
}
在这个示例中,我们创建了一个TCP/IP套接字,绑定IP地址和端口号,并监听连接请求。当客户端连接时,我们发送文件名和文件大小,然后发送文件内容。最后,我们关闭套接字。
请注意,这只是一个简单的示例,实际应用中可能需要考虑更多的细节,例如错误处理、文件传输进度、断点续传等。同时,在实际应用中,我们通常会使用现有的文件传输协议和库,例如FTP、SFTP、WebDAV等,以提高安全性和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云