Processing:Библиотеки/Network/Класс Client/readBytesUntil(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
Нет описания правки
Строка 14: Строка 14:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
client.readBytesUntil(interesting)
client.readBytesUntil(interesting)
client.readBytesUntil(interesting, byteBuffer)
client.readBytesUntil(interesting, byteBuffer)
Строка 21: Строка 21:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
client      – любая переменная типа Client. Тип данных – Client
client      – любая переменная типа Client. Тип данных – Client
interesting – символ, на котором нужно завершить считывание данных. Тип данных – int
interesting – символ, на котором нужно завершить считывание данных. Тип данных – int
Строка 29: Строка 29:
==Возвращаемое значение==
==Возвращаемое значение==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Тип данных – byte[] и int.
Тип данных – byte[] и int.
</syntaxhighlight>
</syntaxhighlight>
Строка 35: Строка 35:
==Пример==
==Пример==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
// Этот скетч-пример создает клиента,
// Этот скетч-пример создает клиента,
// который прослушивает входящие данные до тех пор,
// который прослушивает входящие данные до тех пор,

Версия от 18:11, 14 мая 2023


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


Черновик


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

См.также

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