Страница: 1 |
Страница: 1 |
Вопрос: Ограничение строки по сети
Добавлено: 16.11.11 07:35
Автор вопроса: Sergey
Передаю от сервера клиенту такую строку:
Клиент, почему-то получает вот это:
Т.е. на несколько символов меньше. Думал, что дело вот в этом:
data = New [Byte](16384) {}
Но уже увеличил (раньше было и 1024 и 4048), но не помогает. Как передать по сети больше? Т.е. виноват клиент или сервер:
Сервер:
Dim msg As Byte() = System.Text.Encoding.Unicode.GetBytes(data)
stream.Write(msg, 0, msg.Length)
i = stream.Read(bytes, 0, bytes.Length)
Клиент принимает:
data = New [Byte](16384) {}
Dim responseData As [String] = [String].Empty
Dim bytes As Int32 = stream.Read(data, 0, data.Length)
responseData = System.Text.Encoding.Unicode.GetString(data, 0, bytes)
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #1
Добавлено: 16.11.11 10:05
эту
выполни второй раз
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 4
Ответов: 5
Профиль | | #2
Добавлено: 16.11.11 14:51
Т.е. второй раз? bytes уже-ж объявлена. Ошибка получается.
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 16.11.11 22:36
stream.Read не всегда читает длину которая была запрошена, он может считать меньше чем было запрошено. Нужно делать stream.Read до тех пор, пока не считается в сумме указанное кол-во байт.
http://www.yoda.arachsys.com/csharp/readbinary.html