IPConnection.Receive

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

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