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

Материал из Онлайн справочника
Версия от 21:39, 13 августа 2018; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску


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


Черновик


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); 
  } 
}

См.также

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