Для моего текущего проекта мне нужно запросить данные XML через соединение сокета tcp/ip. Для этого я использую класс TcpClient:Соединения сокета Tcp/Ip в .NET
Dim client As New TcpClient()
client.Connect(server, port)
Dim stream As NetworkStream = client.GetStream()
stream.Write(request)
stream.Read(buffer, 0, buffer.length)
// Output buffer and return results...
Теперь это работает отлично, и денди для маленьких ответов. Однако, когда я начинаю получать большие блоки данных, кажется, что данные попадают через соединение сокета во всплесках. Когда это происходит, вызов stream.Read только считывает первый пакет, и, таким образом, я пропускаю оставшуюся часть ответа.
Каков наилучший способ справиться с этой проблемой? Первоначально я пытался просто зациклиться до тех пор, пока у меня не будет действительного XML-документа, но я обнаружил, что между потоком. Чтение вызывает, что базовый поток иногда закрывается, и я пропускаю последнюю часть данных.
Это то, что я сделал, но основной поток закрывался между чтениями. Как это объяснить? – 2008-10-03 19:14:22