You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WPF经TCP向C客户端传输多文件时内容错乱、接收大小为0问题排查

C#(WPF)端与C客户端TCP文件传输异常排查请求

基本场景

基于WPF框架开发的C# GUI程序,需通过TCP Socket将本地存储的3个文件传输给C语言实现的客户端程序,待传输的文件路径预先存储在数组中。目前遇到两类核心传输异常,经多日排查仍未定位根因,恳请社区协助指出代码疏漏、明确故障产生根源。

具体异常表现

  • 第一类异常:已成功传输的单个文件在接收端写入本地时出现内容错位——文件末尾额外追加8个空值、文件开头丢失前4个字符
  • 第二类异常:剩余2个文件在C接收端解析文件大小字段时,读取到的数值为0,无法正常完成接收流程

两端核心实现逻辑

C#发送端

  • 初始化流程:创建IPEndPoint绑定指定端口,初始化TCP监听Socket,待客户端接入后,循环调用SendFile方法,按路径数组顺序发送对应目标文件
  • SendFile方法实现步骤:
    1. 通过FileInfo获取目标文件的大小值
    2. 借助BinaryWriter将文件大小值写入MemoryStream完成序列化,截取前4字节发送给客户端
    3. 通过FileStream分块读取文件内容,持续发送至Socket连接

C接收端

  • 已封装三类基础工具方法:
    • 可循环接收直至收满指定字节数的recv_raw方法
    • 基于recv_raw解析文件大小字段的recv_file_len方法
    • 按解析得到的文件长度循环接收数据并写入本地文件的write_data方法
  • 主流程逻辑:依次打开三个待写入的目标本地文件,按序调用write_data方法完成三个文件的接收

内容的提问来源于stack exchange,提问作者user14368706

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 10:36:03