IPConnection.IsBlocking

From SunFlurry wiki
Jump to: navigation, search
  IsBlocking (Тип соединения)
Объект:Объект IP
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Нет
Доступность:Чтение и запись
Визуальность:Нет

Атрибут получает или изменяет свойство того, является ли данный сокет (соединение) блокирующим или нет. Операционная система не во всех случаях дает изменять такое свойство после начала обмена информацией, поэтому, рекомендуется изменять атрибут сразу же после установки соединения. Атрибут не будет работать, если соединение не установлено.

Синтаксис

IPConnection.IsBlocking:<Блокирующий ли это сокет TCP (INT)>

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

Возвращает 1, если текущее соединение блокирующее, иначе возвращает 0.

Примеры

//Пример показывает соединение, отсылку простого запроса с помощью операции POST и получение ответа 
//Входящие переменные: Ссылка, Стр (тело запроса)
If pos("//",Ссылка)>0 Then
  TearStr(Ссылка,"//");
EndIf;  
Сервер:=TearStr(Ссылка,"/");

aTCP:=0;
For i:=1 To 5 Do
  aTCP:=IPConnection.Connect(Сервер);
  If aTCP.IsConnected Then
    Break;
  EndIf;
EndDo;
If _Or(isEmpty(aTCP),not aTCP.isConnected()) Then
  Message("Невозможно соединиться с сервером "+Сервер+"!");
  Exit;
EndIf;
aTCP.IsBlocking:=1;

aTCP.HTTPClear();
aTCP.HTTPSetOperation("POST /"+Ссылка+" HTTP/1.1");
aTCP.HTTPSetHeaderField("Host",Сервер);
aTCP.HTTPSetHeaderField("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
aTCP.HTTPSetHeaderField("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
aTCP.HTTPSetHeaderField("Accept-Language","en");
aTCP.HTTPSetHeaderField("Connection","Close");

Стр:="Content-Disposition: form-data; name=""xml_file""; filename=""request.xml"""+_NEWLINE+
  "Content-Type: text/xml; charset=utf-8"+_NEWLINE+_NEWLINE+UnicodeToUTF8(Стр);
//Граница
стрГраница:="---------------------------"+Random(65536)+Random(65536)+Random(65536);
While pos(стрГраница,Стр)>0 Do
  стрГраница:="---------------------------"+Random(65536)+Random(65536)+Random(65536);
EndDo;
aTCP.HTTPSetHeaderField("Content-Type","multipart/form-data; boundary="+стрГраница);
Стр:="--"+стрГраница+_NEWLINE+Стр+_NEWLINE+"--"+стрГраница+"--"+_NEWLINE+_NEWLINE;
aTCP.HTTPSetHeaderField("Content-Length",Length(Стр));
aTCP.HTTPSetBody(Стр);

If not aTCP.HTTPSendAndReceive Then
  Message("Ошибка при отправке пакета!");
  Exit;
EndIf;
//Получаем заголовок и тело
СтрЗ:=aTCP.HTTPHeaderAsString;
СтрТ:=aTCP.HTTPBodyAsString;
If pos(";charset=utf-8",СтрТ)>0 Then
  СтрТ:=UTF8ToUnicode(СтрТ);
EndIf;    
If pos(" 200 OK"+_NEWLINE,СтрЗ)=0 Then
  Message("Ошибка сервера!");
  Exit;
EndIf;

...