C# 在通过UDP套接字发送大型图像时抛出解析完成之前遇到的流结束
我正在通过UDP套接字以序列化复杂对象的形式发送Jpeg编码的图像。由于UDP数据报支持最大长度为52KB到54KB,我正在将到达的数据报写入内存流,以便立即对其进行反序列化 接收端代码:C# 在通过UDP套接字发送大型图像时抛出解析完成之前遇到的流结束,c#,image,exception,udp,deserialization,C#,Image,Exception,Udp,Deserialization,我正在通过UDP套接字以序列化复杂对象的形式发送Jpeg编码的图像。由于UDP数据报支持最大长度为52KB到54KB,我正在将到达的数据报写入内存流,以便立即对其进行反序列化 接收端代码: while (AccumulatingBytes <= TotalSizeOfComplexObject)//Size of Complex Object after Serialization which I get through TCP// { byte[] Recievedbytes =
while (AccumulatingBytes <= TotalSizeOfComplexObject)//Size of Complex Object after Serialization which I get through TCP//
{
byte[] Recievedbytes = UdpListener.Receive(ref RemoteEndPoint);//I m Sending fixed size of 204 NUMBER OF BYTES
ImageStream = new MemoryStream();
ImageStream.Position = (long)AccumulatingBytes;
ImageStream.Write(Recievedbytes, 0, Recievedbytes.Length);
AccumulatingBytes += 204;
}
while(累计字节您是否一直在0位置写入字节流
ImageStream.Write(Recievedbytes, 0, Recievedbytes.Length);
也许您需要的不是零位变量累加字节数?您是否一直在零位写入字节流
ImageStream.Write(Recievedbytes, 0, Recievedbytes.Length);
也许你需要的不是零位变量累加字节?一些明显的观察结果可能会有帮助
- 为什么每次循环中都会出现一个新的
MemoryStream
?这是最直接的问题
- 为什么不
acculatingbytes+=Receivedbytes.Length;
此外,如果您自己没有处理错误和丢失的数据,请使用TCP
比如:
ImageStream = new MemoryStream();
while (AccumulatingBytes <= TotalSizeOfComplexObject)
{
byte[] Recievedbytes = UdpListener.Receive(ref RemoteEndPoint);
ImageStream.Write(Recievedbytes, 0, Recievedbytes.Length);
AccumulatingBytes += Recievedbytes.Length;
}
ImageStream=newmemoryStream();
而(累计字节一些明显的观察结果可能有助于
- 为什么每次循环中都会出现一个新的
MemoryStream
?这是最直接的问题
- 为什么不
acculatingbytes+=Receivedbytes.Length;
此外,如果您自己没有处理错误和丢失的数据,请使用TCP
比如:
ImageStream = new MemoryStream();
while (AccumulatingBytes <= TotalSizeOfComplexObject)
{
byte[] Recievedbytes = UdpListener.Receive(ref RemoteEndPoint);
ImageStream.Write(Recievedbytes, 0, Recievedbytes.Length);
AccumulatingBytes += Recievedbytes.Length;
}
ImageStream=newmemoryStream();
while(如果反序列化流而不通过网络发送,则累积字节数是否有效?如果反序列化流而不通过网络发送,则是否有效?否,即从第1个(第0个)开始写入receivedbytes
)数组的字节;它不影响写入位置。确切地说,每次用新数据填充ReceivedBytes数组时。不,这是从数组的第一个(第零个)字节写入ReceivedBytes
;它不影响写入位置。确切地说,每次用新数据填充ReceivedBytes数组时。