1. 基于TCP协议的图片传输实现方案
在工业视觉检测、远程监控等场景中,网络图片传输是常见需求。相比HTTP等高层协议,TCP协议因其可靠性和实时性成为首选。我在某自动化检测项目中就遇到过需要实时传输高清缺陷图片的需求,当时尝试了多种方案后,最终选择了TCP直连的方式。
TCP传输图片的核心在于正确处理字节流的分包与重组。不同于文本数据,图片作为二进制文件具有两个特点:一是单帧数据量大(通常几百KB到几MB),二是对数据完整性要求极高(丢失几个字节就可能导致图片无法解析)。下面通过完整案例拆解其中的关键技术点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 发送端实现详解
2.1 基础发送流程
发送端的核心任务是将图片文件转换为字节流并通过网络发送。以下是经过生产环境验证的代码:
csharp复制private void SendImage(string imagePath, string ipAddress, int port)
{
try
{
// 加载图片并转换为字节数组
using (Bitmap bitmap = new Bitmap(imagePath))
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, ImageFormat.Jpeg);
byte[] imageBytes = ms.ToArray();
// 建立TCP连接
using (TcpClient client = new TcpClient(ipAddress, port))
using (NetworkStream stream = client.GetStream())
{
// 先发送数据长度(4字节)
byte[] lengthBytes = BitConverter.GetBytes(imageBytes.Length);
stream.Write(length
