2013-11-20 5 views
1
  SyncLock _client.GetStream 
       Dim bArray() As Byte 
       Dim bWriter As New BinaryWriter(_client.GetStream) 

       Dim bf As New BinaryFormatter 
       Dim mStream As New MemoryStream 

       bf.Serialize(mStream, dSet) 

       'Send tagIdentifier 
       bWriter.Write(bTag) 
       'Send the Object length 
       bWriter.Write(CInt(mStream.ToArray.Length)) 

       'It's not null, value of 3024 
       Console.WriteLine("Mstream : " & mStream.ToArray.Length) 

       'Initialize the BinaryReader 
       Dim bReader As New BinaryReader(mStream) 
       Do 
        bArray = bReader.ReadBytes(1024) 
        ''''''''''''''bArray stay at 0''''''''''''''' 
        bWriter.Write(bArray) 
       Loop While bArray.Length = 1024 

       bWriter.Flush() 
      End SyncLock 

그래서이 코드를 사용하기 위해 노력하고있는 것은 직렬화 된 데이터 집합을 보내는 것입니다. MemoryStream의 BinaryReader가 비워 두십시오.

그래서 내가 MemoryStream을에 직렬화 된 DSET을 넣어

또한 BinaryWritter 함께 보낼 바이트의 배열로 변환의 BinaryReader를 포인터는 mSteam가 3024의 값이 있더라도 0에서 머물 것으로 보인다

답변

1

방금 ​​MemoryStream에 썼기 때문에 포인터는 끝까지 읽을 것이 없습니다. 그것에서 읽기 전에 다시 0 (영)으로 위치를 재설정 :

+0

가 커서의 위치보다가 마지막에 머물 어딘가에 지정, 또는 내가 그것을 알고 생각 해요 되었습니까? – Mokmeuh

+0

"일반 지식"이라고 부릅니다. 일반적으로 스트림의 위치는 명시 적으로 위치를 변경하거나 스트림을 다시 닫지 않는 한 마지막으로 작성한 위치 바로 다음에 있습니다. –

+0

정보 및 답변에 감사드립니다. – Mokmeuh

관련 문제