Difference between revisions of "IPConnection.ReceiveUntil"

From SunFlurry wiki
Jump to: navigation, search
(Примеры)
 
m (1 revision imported)
 
(No difference)

Latest revision as of 08:51, 7 February 2021

  ReceiveUntil (Обмен данными)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, разрыв соединения, системная ошибка
Визуальность:Нет

TCP/IP функция получает данные в ANSI-строку по установленному соединению до момента, когда встретится указанная подстрока поиска. Данные могут представлять собой бинарную информацию. Функцию можно использовать как для блокирующих, так и для не блокирующих соединений, однако для блокирующих или шифрованных соединений, функция может работать медленнее и использовать большее процессорное время. Если соединение будет разорвано до успешного получения данных, функция вызовет исключение. Функции, типа HTTPReceiveHeader пользуются подобным способом для получения заголовка http пакета.

Синтаксис

IPConnection.ReceiveUntil(<Подстрока поиска (STRING)>):<Полученная строка (STRING)>

Аргументы

  • <Подстрока поиска (STRING)> - Аргумент задает строку, при получении которой, процесс принятия информации останавливается. Следующий байт, который будет принят с помощью текущего соединения, будет байтом, следующим непосредственно после подстроки поиска.

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

Возвращается принятая строка, которая будет оканчиваться на подстроку поиска.

Примеры

Сокет:=IPConnection.Connect("127.0.0.1:80");
If not Сокет.IsConnected() Then
  Message("Сервер не отвечает","!");
  Exit 0;
EndIf;
Try
 Сокет.HTTPSetOperation("GET "+СтрДоб+" HTTP/1.0");
 Сокет.HTTPSetHeaderField("Host",tcp.HTTPPunycodeEncode(URL));
 Сокет.HTTPSetHeaderField("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
 Сокет.HTTPSetHeaderField("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
 Сокет.HTTPSetHeaderField("Accept-Language","en");
 Сокет.HTTPSetHeaderField("Connection","Close");
 If Сокет.HTTPSend Then
   Стр:=Сокет.ReceiveUntil(_NEWLINE+_NEWLINE);
   Message("Заголовок ответа сервера: "+_NEWLINE+Стр);
   Exit 1;
 EndIf;
Except
  Exit 0;
EndTry;