Processing:Библиотеки/Network/Класс Client/readBytesUntil()

Материал из Онлайн справочника
Версия от 11:51, 20 мая 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску


Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



readBytesUntil()[1]

Описание

Считывает данные из порта в буфер до заданного символа (включая его самого). Если этого символа в буфере нет, функция вернет null. Версия без параметра byteBuffer возвращает массив байтов со всеми данными до байта interesting (включая его самого). Это не слишком эффективно, но зато просто. Версия с параметром byteBuffer работает быстрее и менее требовательна к памяти. Она считывает данные из буфера, помещает их в массив байтов, заданный в параметре byteBuffer, и возвращает значение int, отвечающее за количество считанных байтов. Если байтовый буфер недостаточно велик, функция вернет «-1», а в текстовой области будет напечатано сообщение об ошибке. Если в буфере ничего нет, функция вернет «0».

Синтаксис

client.readBytesUntil(interesting)
client.readBytesUntil(interesting, byteBuffer)

Параметры

client      – любая переменная типа Client. Тип данных – Client
interesting – символ, на котором нужно завершить считывание данных. Тип данных – int
byteBuffer  – массив байтов, в который нужно сохранить данные. Тип данных – byte[]

Возвращаемое значение

Тип данных – byte[] и int.

Пример

// Этот скетч-пример создает клиента,
// который прослушивает входящие данные до тех пор,
// пока не наткнется на специальный символ, 
// а затем помещает считанные байты в буфер byte[].

import processing.net.*; 
Client myClient; 
byte[] byteBuffer = new byte[12];
byte interesting = 10;

void setup() { 
  size (300, 100);
  // Подключаемся к локальной машине через порт 10002.
  // Этот скетч-пример не запустится,
  // если вы ранее не запустили сервер на этом порте.
  myClient = new Client(this, "127.0.0.1", 10002); 
} 

void draw() { 
  if (myClient.available() > 0) { 
    background(0);
    // считываем, пока не натыкаемся на заданный символ:
    int byteCount = myClient.readBytesUntil(interesting, byteBuffer); 
    // конвертируем массив байтов в String:
    String myString = new String(byteBuffer);
    // показываем эту String в консоли:
    println(myString); 
  } 
}

См.также

Внешние ссылки