Member 11543226 Ответов: 1

Как считывать данные по сетевому потоку до определенного характера?


Я написал код для получения данных из 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

Всегда использовать  Ответить   кнопка для отправки комментариев / запросов заинтересованному пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

1 Ответов

Рейтинг:
1

johannesnestler

Посмотрите на MSDN и проверьте этот образец, чтобы увидеть способ, как вы могли бы это сделать (он читается до < eof>, но просто замените его своим специальным символом(символами)

https://msdn.microsoft.com/de-de/library/fx6588te(v=против 110). aspx