Difference between revisions of "IPConnection.ReceiveUntil"
(→Примеры) |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 07:51, 7 February 2021
| ReceiveUntil (Обмен данными) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
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;