【发布时间】: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