C#实现文件与图片发送与接收代码
时间: 2024-10-09 22:03:55 浏览: 69
C#使用Socket实现发送和接收图片的方法
在C#中,你可以使用`System.IO`命名空间中的类来处理文件操作,如`FileStream`用于读取和写入文件,而`System.Net`命名空间中的`Socket`或`TcpClient`类可以用来进行网络通信,包括发送和接收图片数据。这里是一个简单的示例,展示了如何通过TCP连接发送和接收文件:
**发送文件:**
```csharp
using System;
using System.IO;
using System.Net.Sockets;
public void SendFile(string filePath, TcpClient client)
{
try
{
// 打开文件流
using (FileStream fileStream = File.OpenRead(filePath))
{
byte[] buffer = new byte[4096]; // 缓冲区大小
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
// 发送文件内容到客户端
client.GetStream().Write(buffer, 0, bytesRead);
}
}
// 发送文件结束信号
client.Send(Encoding.ASCII.GetBytes("File transmission complete"));
}
catch (Exception ex)
{
Console.WriteLine($"Error sending file: {ex.Message}");
}
}
```
**接收文件:**
```csharp
public async Task ReceiveFile(TcpClient client, string savePath)
{
try
{
// 创建接收到的数据缓冲区
byte[] buffer = new byte[4096];
// 接收数据直到接收到"File transmission complete"
while (true)
{
int bytesRead = await client.GetStream().ReadAsync(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
// 将接收到的数据写入文件
File.WriteAllBytes(savePath + "receivedfile.jpg", buffer, 0, bytesRead);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error receiving file: {ex.Message}");
}
}
```
请注意这只是一个基础示例,实际应用中还需要考虑错误处理、异步操作和分块传输大文件等问题。另外,发送图片时通常会先将图片转换为字节数组,然后发送。
阅读全文