Как считывать данные по сетевому потоку до определенного характера?
Я написал код для получения данных из networkstream, и если данные содержат первый символ"$", то я идентифицирую эти данные как данные штрих-кодов, но иногда, когда данные большие, как 7000 байт в то время данные поступают в пакетах разных размеров, но некоторые байты не обнаруживаются, так как они пропускают символ " $ " в начале . поэтому я хочу читать данные до указанного байта типа "*". Данные, отправленные клиентом, начинаются с " $ "и заканчиваются"*". вот моя программа .
пожалуйста, помогите, спасибо
Что я уже пробовал:
List<byte> list = new List<byte>(); networkStream = clientSocket.GetStream(); for (int p = 0; p >= 0; p++) { b = new byte[5000]; int k = networkStream.Read(b, 0, b.Length); for (int i = 0; i < k; i++) { Convert.ToChar(b[i]); } var j = b.Length - 1; while (b[j] == 0) { --j; } var temp = new byte[j + 1]; Array.Copy(b, temp, j + 1); string res = System.Text.Encoding.ASCII.GetString(temp); switch (res.Substring(0, 1)) { case "$": if (res.StartsWith("$")) //barcode string { //barcode// list.Add(res); if(res.Contains("*")) { string collection = string.Join("", list); } } else{} break; } } }
Richard MacCutchan
Вы должны прочитать все данные и собрать их в отдельный буфер. Как только удаленное устройство покажет, что больше ничего не будет, вы можете искать маркерные символы, чтобы найти необходимую информацию.
Member 11543226
как добавить данные в буфер?
Karthik_Mahalingam
Всегда использовать Ответить кнопка для отправки комментариев / запросов заинтересованному пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.