C#使用socket连续发送两张图片
时间: 2023-09-11 07:10:09 浏览: 56
使用 Socket 发送两张图片的过程大致分为以下几个步骤:
1. 建立 Socket 连接;
2. 在 Socket 连接上发送第一张图片;
3. 等待第一张图片发送完成;
4. 在 Socket 连接上发送第二张图片;
5. 等待第二张图片发送完成;
6. 关闭 Socket 连接。
下面是一个示例代码,用于在 C# 中使用 Socket 连续发送两张图片:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
class Program
{
static void Main(string[] args)
{
byte[] image1 = File.ReadAllBytes("image1.jpg");
byte[] image2 = File.ReadAllBytes("image2.jpg");
string host = "yourhost.com"; // 替换成您自己的主机名或 IP 地址
int port = 12345; // 替换成您自己的端口号
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
socket.Connect(host, port);
SendImage(socket, "image1.jpg", image1);
WaitForSendComplete(socket);
SendImage(socket, "image2.jpg", image2);
WaitForSendComplete(socket);
}
}
static void SendImage(Socket socket, string filename, byte[] data)
{
byte[] filenameBytes = System.Text.Encoding.UTF8.GetBytes(filename);
byte[] header = new byte[4 + filenameBytes.Length];
header[0] = (byte)'I';
header[1] = (byte)'M';
header[2] = (byte)'G';
header[3] = (byte)filenameBytes.Length;
Array.Copy(filenameBytes, 0, header, 4, filenameBytes.Length);
byte[] packet = new byte[header.Length + data.Length];
Array.Copy(header, 0, packet, 0, header.Length);
Array.Copy(data, 0, packet, header.Length, data.Length);
socket.Send(packet);
}
static void WaitForSendComplete(Socket socket)
{
byte[] buffer = new byte[1024];
int bytesReceived = socket.Receive(buffer);
string response = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesReceived);
}
}
```
这段代码使用了自定义的协议来发送图片。首先,发送方会将每张图片的文件名和数据组合成一个包,然后将包发送到接收方。接收方在接收到每个包后,会先读取包头中的文件名信息,然后将文件名和数据保存到本地磁盘上。
在本示例代码中,发送方使用了 `SendImage` 方法来发送图片,该方法会将文件名和数据组合成一个包,然后调用 `Socket.Send` 方法来发送整个包。发送方还使用了 `WaitForSendComplete` 方法来等待图片发送完成的响应。接收方在收到每个包后,会先读取包头中的文件名信息,然后将文件名和数据保存到本地磁盘上。
请注意,这段代码仅仅是一个示例,实际应用中您需要根据自己的需求进行修改和完善。