Difference between revisions of "IPConnection.Receive"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:51, 7 February 2021
Receive (Обмен данными) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
TCP/IP функция получает данные в ANSI-строку по установленному соединению. Данные могут представлять собой бинарную информацию. Функцию можно использовать только для не блокирующих, не шифрованных соединений. Функция получает столько информации, сколько в данный момент ожидает в буфере операционной системы, и, после этого сразу возвращает управление. Никакого внутреннего ожидания не выполняется. Функция работает быстрее других функций получения, однако, требует создания дополнительного цикла ожидания готовности данных с помощью функции Wait. Функция может вернуть пустую строку, если в данный момент в буфере системы нет никакой информации. Если произошел разрыв связи, функция вызывает исключение.
Синтаксис
IPConnection.Receive(<Максимальный размер данных в байтах (INT)>):<Полученная строка (STRING)>
Аргументы
<Максимальный размер данных в байтах (INT)>
- (необязательный аргумент) Аргумент задает максимальный размер получаемых данных.
Возвращаемое значение
Возвращается полученные данные из буфера системы, в виде строки ANSI.
Примеры
//Пример функции получения информации в виде буфера при неблокирующем соединении //Обычно, к примеру, для прокси соединений, для полного дуплекса, чтение осуществляется одновременно с записью, поэтому, для прокси соединения эту функцию было бы необходимо изменить Function ПринятьБуфер(Размер,Сокет) Буфер:=Buffer.Create(); iPos:=0; While iPos<Размер Do Size2:=Min(Размер-iPos,2048); Стр:=Сокет.Receive(Size2); If Length(Стр)>0 Then Буфер.SetString(iPos,Стр); iPos:=iPos+Length(Стр); Continue; EndIf; Сокет.Wait(50,1); EndDo; Exit Буфер; EndFunction