IPConnection.Timeout

From SunFlurry wiki
Revision as of 14:00, 20 March 2024 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  Timeout (Тайм-аут передачи)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в число
Визуальность:Нет

Функция получает или изменяет тайм-аут функций чтения, записи или соединения, заданный в миллисекундах. При чтении или записи, если за указанное время, не удается получить (отослать) какую-либо часть данных, соединение будет считаться разорванным. Правильно установленный тайм-аут позволяет вовремя освобождать ресурсы сервера и уменьшать последствия возможных атак DOS.

Синтаксис

IPConnection.Timeout(<Новый тайм-аут в мс. (INT)>,<Тип тайм-аута (INT)>=0):<Текущий тайм-аут функций чтения или записи в мс. (INT)>

Аргументы

  • <Новый тайм-аут в мс. (INT)> - (необязательный аргумент) Задает новый тайм-аут указанного в следующем аргументе типа. Если аргумент опущен, тайм-аут не будет изменен.
  • <Тип тайм-аута (INT)> - (необязательный аргумент) Задает тип тайм-аута. Возможны следующие значения аргумента:
    • 0 (по умолчанию) -- изменить одновременно тайм-аут для чтения и записи. Функция возвращает предыдущий тайм-аут для чтения.
    • 1 -- изменить тайм-аут для чтения. Функция возвращает предыдущий тайм-аут для чтения.
    • 2 -- изменить тайм-аут для записи. Функция возвращает предыдущий тайм-аут для записи.
    • 3 -- изменить тайм-аут для соединения (работает не со всеми видами прокси). Функция возвращает предыдущий тайм-аут соединения. По умолчанию, этот параметр равен 0 и соответствует установкам системы.

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

Возвращается предыдущее (текущее) значение тайм-аута указанного во втором аргументе типа.

Примеры

Сокет:=IPConnection.Connect("127.0.0.1:5555");
If not Сокет.IsConnected() Then
  Message("Сервер не отвечает","!");
  Exit 0;
EndIf;
//Установить тайм-аут в 2 минуты
Сокет.TimeOut(120000);
Try
  Стр:=FileToString("c:\Test.txt",0);
  aBuf:=Buffer.Create();
  If StringTypeStr(Стр)="ANSI" Then
    //ANSI, длина, строка
    aBuf.SetByte(0,0);
    aBuf.SetDword(1,Length(Стр));
  Else
    //UTF-16, длина, строка
    aBuf.SetByte(0,1);
    aBuf.SetDword(1,Length(Стр)*2);
  EndIf;
  Сокет.SendBufferRaw(aBuf,0,5);
  Сокет.SendStrRaw(Стр,StringTypeStr(Стр)<>"ANSI");
  Exit 1;
Except
  Exit 0;
EndTry;