Processing:Библиотеки/Network/Класс Client/readBytesUntil(): различия между версиями
Материал из Онлайн справочника
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 14: | Строка 14: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
client.readBytesUntil(interesting) | client.readBytesUntil(interesting) | ||
client.readBytesUntil(interesting, byteBuffer) | client.readBytesUntil(interesting, byteBuffer) | ||
Строка 21: | Строка 21: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
client – любая переменная типа Client. Тип данных – Client | client – любая переменная типа Client. Тип данных – Client | ||
interesting – символ, на котором нужно завершить считывание данных. Тип данных – int | interesting – символ, на котором нужно завершить считывание данных. Тип данных – int | ||
Строка 29: | Строка 29: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
Тип данных – byte[] и int. | Тип данных – byte[] и int. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 35: | Строка 35: | ||
==Пример== | ==Пример== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
// Этот скетч-пример создает клиента, | // Этот скетч-пример создает клиента, | ||
// который прослушивает входящие данные до тех пор, | // который прослушивает входящие данные до тех пор, |
Версия от 18:11, 14 мая 2023
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик |
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);
}
}