2011-09-23 15 views
0

我正在使用MRIM(Mail.Ru代理程序)协议。 MRIM是一种二进制协议,所以为了制作数据二进制文件,我使用了BinaryWriter类。下面的代码:二进制Writer返回null的字节数组

private byte[] CreateMrimPacket(ulong message) 
    { 
     byte[] binaryData; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      using (BinaryWriter bw = new BinaryWriter(ms)) 
      { 
       bw.Write(CS_MAGIC); //CS_MAGIC is a constant that doesn't equal 0 
       bw.Write(PROTO_VERSION); //Same thing 
       bw.Write((ulong)SeqCounter); 
       bw.Write(message); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       bw.Write((ulong)0); 
       binaryData = new byte[ms.Length]; 
       ms.Read(binaryData, 0, binaryData.Length); 
      } 
     } 
     return binaryData; 
    } 

该函数返回字节数组,但所有的值都为0。
请帮我解决这个问题。
在此先感谢

回答

6

你写流,留下在你写数据的末尾,然后从中读取。目前没有数据!

可能使用ms.Position = 0;读书前......不过还好,它很容易,你正在做的反正...只是使用:

return ms.ToArray(); 

MemoryStream.ToArray返回所有的数据流中,无论的当前位置(并且不管流是否关闭)。

+0

非常感谢!现在一切正常! – Cracker

相关问题