请教关于 NetworkStream 两次读取相同数据流出错的问题
两台主机相互通信      主机A把数据库返回的DATASET数据集序列化后      计算序列化后BYTE数组的长度   再序列化形成第二个长度为59的BYTE数组   把两个数组合并后通过NetworkStream.Write向主机B发送   主机B先读取前59个BYTE   然后反序列化后获得后续的真正数据BYTE数组长度   从而以此建立固定长度的个缓冲区来接受 
 byte[]   k1   =   new   byte[59]; 
 byte[]   k2   ; 
 第一次读取      myNetwoekStream.Read(k1,0,59);   
                                     int   length   =(反序列化)k1; 
                                     k2   =   new   byte[length   +   59]; 
 第二次读取      myNetworkStream.Read(k2,0,59   +   length); 
                                     最后通过FOR循环获得K2中第59位到最后一位的子数组,最终再反序          
                                     列化得到DATASET   
 但是当我设置断点后发现      前后两次读取数据流后数组   K1和   K2的前59个元素竟然不同      但应该是一样的啊         求教高手   
 第一次发贴,可能问题表达的不是很明白:)   ,   对问题有疑问的可以提问         
------解决方案--------------------我一般把缓冲设为1024*800,不管传多少数据,即使是1K,也用这么大来接收,然后这样 
 int i = socket.receive(); 
 再用Array.Copy( BufferData , 0 , ReceiveData , start , end );来把数据存到receiveData中,最后反序列化
------解决方案--------------------> >  myNetworkStream.Read(k2,0,59 + length);   
 NetworkStream(或者任何一个其它的Stram)的Read操作是连续的。也就是说,如果头一次Read读取了59个字节,第二次是从Stream的第60个字节开始读的,不是第一个。   
 如果Stream支持Random Access的话(比如MemoryStream),可以通过设置Position改变当前Read的位置,不过NetworkStram是forward only的,只能顺序读一次。