【问题标题】:The stream-end was reached before the processing is completed在处理完成之前到达流端
【发布时间】:2015-06-19 05:48:00
【问题描述】:

当我尝试将某些内容加载到 MemoryStream 时,我收到了这个错误。我尝试通过服务器通过网络发送图片(以字节流形式)。但是每次我尝试发送它时,它都会说

在处理完成之前已到达流结束。

下面的代码中标出了错误所在的行

namespace Model_Library
{
    [Serializable]
    public class Package
    {
        public List<object> DATA;
        public int ID;
        public PackageType packetType;

        public Package(PackageType u_type, int u_ID)
        {
            DATA = new List<object>();
            this.ID = u_ID;
            this.packetType = u_type;
        }

        public Package(byte[] packetBytes)
        {
            using (MemoryStream ms = new MemoryStream(packetBytes))
            {
                BinaryFormatter bf = new BinaryFormatter();
                Package p = (Package)bf.Deserialize(ms); //Here is the error
                ID = p.ID;
                DATA = p.DATA;
                packetType = p.packetType;
            }
        }

        public byte[] toBytes()
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, this);
            byte[] bytes = ms.ToArray();
            ms.Close();
            return bytes;
        }
    }

    public enum PackageType
    {
        connect,  
        login,
        registration, 
        friends, 
        message,
        message_confirmation, 
        load_history, 
        search_friends,
        add_friend 
    }
}

【问题讨论】:

  • 尝试将流位置设置为流的开头
  • 我已经试过“ms.Position = 0;”但我得到了同样的错误
  • 使用简单对象运行代码没有错误?
  • 没错。我不知道为什么只有当我尝试通过流发送图片时才会出现此错误。
  • 可能显示您的流/网络发送代码...错误意味着接收到的字节不是整个消息,它过早完成 - 是呈现给.Deserialize 的字节数组的长度相同产生toBytes()?

标签: c# serialization bytearray deserialization memorystream


【解决方案1】:

确保已通过网络接收到所有数据,您没有在此处显示,但您是否使用 NetworkStream.DataAvailable 然后请阅读此答案,因为它涉及有关如何管理读取数据的一些详细信息断网-TcpClient.GetStream().DataAvailable returns false, but stream has more data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多