IPConnection.Timeout
Revision as of 12:05, 13 March 2024 by 1>Admin
| Timeout (Тайм-аут передачи) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция получает или изменяет тайм-аут функций чтения, записи или соединения, заданный в миллисекундах. При чтении или записи, если за указанное время, не удается получить (отослать) какую-либо часть данных, соединение будет считаться разорванным. Правильно установленный тайм-аут позволяет вовремя освобождать ресурсы сервера и уменьшать последствия возможных атак 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;