<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=IPConnection.Wait</id>
	<title>IPConnection.Wait - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=IPConnection.Wait"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=IPConnection.Wait&amp;action=history"/>
	<updated>2026-04-04T17:47:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=IPConnection.Wait&amp;diff=1330&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=IPConnection.Wait&amp;diff=1330&amp;oldid=prev"/>
		<updated>2021-02-07T06:51:32Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:51, 7 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=IPConnection.Wait&amp;diff=1329&amp;oldid=prev</id>
		<title>Admin at 08:19, 16 October 2020</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=IPConnection.Wait&amp;diff=1329&amp;oldid=prev"/>
		<updated>2020-10-16T08:19:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=Wait&lt;br /&gt;
|object=[[Объект IP]]&lt;br /&gt;
|caption=Серверные соединения&lt;br /&gt;
|type=1&lt;br /&gt;
|status=2&lt;br /&gt;
|db=0&lt;br /&gt;
|exception=Невозможно превратить в число, системная ошибка&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Объект IP]]}}&lt;br /&gt;
TCP/IP функция работающая с установленным соединением, выполняет ожидание возникновения события в течение заданного времени, и возвращается в момент возникновения события, либо по истечении времени ожидания. Функция используется для исключения паузы между возникновением события и его обработкой, которая возникла бы при использовании функции [[Sleep]]. Доступны следующие события: ''событие, возникающее в момент поступления новых данных в буфер операционной системы'' (обычно совместно с функцией [[IPConnection.Receive|Receive]]), ''событие, возникающее после того, как были отправлены данные из буфера операционной системы, и он готов принять новые данные'' (обычно совместно с функцией [[IPConnection.Send|Send]]), ''событие, возникающее в момент, когда в очередь соединений поступило по крайней мере одно новое удаленное соединение'' (обычно совместно с функциями [[IPConnection.ListenEx|ListenEx]] и [[IPConnection.Accept|Accept]]).&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
{{Grey|IPConnection.}}'''Wait'''(''&amp;lt;Время ожидания готовности в мс. (INT)&amp;gt;''{{Optional|,&amp;lt;Тип события для ожидания (INT)&amp;gt;{{Default|{{Eq}}1}}}})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Аргументы ====&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Время ожидания готовности в мс. (INT)&amp;gt;''&amp;lt;/code&amp;gt; - Аргумент задает время в миллисекундах, которое может быть потрачено функцией на ожидание требуемого события IP. Функция возвратит управление либо по истечении времени ожидания, либо в момент возникновения события. Указание менее 10 мс. имеет мало смысла, так как цикл работы с вызовом функции ''Wait'' также будет занимать время и это время будет сравнимо с указанными 10 мс.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Тип события для ожидания (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Указывает на тип (типы) ожидаемого события. Является битовой маской для указания типов событий. Не рекомендуется, однако, указывать событие ''accept'' совместно с событиями ''read'' и ''write'', некоторые версии Windows могут не совсем корректно обрабатывать такие комбинации. Заданы следующие значения битов:&lt;br /&gt;
** '''бит 1''' (по умолчанию) -- Событие ''read'', возникающее в момент поступления новых данных в буфер операционной системы.&lt;br /&gt;
** '''бит 2''' -- Событие ''write'', возникающее после того, как были отправлены данные из буфера операционной системы, и он готов принять новые данные.&lt;br /&gt;
** '''бит 3''' -- Событие ''accept'', возникающее в момент, когда в очередь соединений поступило по крайней мере одно новое удаленное соединение. Важно понимать, что если в очереди находится более одного соединения, после извлечения из очереди первого и повторения цикла ожидания, он не вернет управление сразу, так как событие для второго соединения уже было создано, поэтому после получения соединения необходимо повторить попытку получения до тех пор, пока новые соединения появляются и только после этого перейти к ожиданию.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Данный пример совмещает серверную и клиентскую часть в одном фрагменте кода.&lt;br /&gt;
//Серверная часть получает http запрос и отдает его, добавляя одно поле, после чего клиентская часть получает пакет и выводит его в лог&lt;br /&gt;
&lt;br /&gt;
аСервер:=IPConnection.ListenEx(8000);&lt;br /&gt;
URL:=&amp;quot;http://127.0.0.1:8000&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Инициализация и отсылка пакета&lt;br /&gt;
If pos(&amp;quot;//&amp;quot;,URL)&amp;gt;0 Then&lt;br /&gt;
  tearStr(URL,&amp;quot;//&amp;quot;);&lt;br /&gt;
EndIf;&lt;br /&gt;
СтрДоб:=URL;    &lt;br /&gt;
URL:=tearStr(СтрДоб,&amp;quot;/&amp;quot;);&lt;br /&gt;
tcp:=IPConnection.Connect(URL);&lt;br /&gt;
if not tcp.IsConnected Then&lt;br /&gt;
  Message(&amp;quot;Ошибка соединения с сервером!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
  Exit;&lt;br /&gt;
EndIf;&lt;br /&gt;
СтрДоб:=&amp;quot;/&amp;quot;+СтрДоб;&lt;br /&gt;
tcp.HTTPSetOperation(&amp;quot;GET &amp;quot;+СтрДоб+&amp;quot; HTTP/1.0&amp;quot;);&lt;br /&gt;
tcp.HTTPSetHeaderField(&amp;quot;Host&amp;quot;,tcp.HTTPPunycodeEncode(URL));&lt;br /&gt;
tcp.HTTPSetHeaderField(&amp;quot;User-Agent&amp;quot;,&amp;quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)&amp;quot;);&lt;br /&gt;
tcp.HTTPSetHeaderField(&amp;quot;Accept&amp;quot;,&amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&amp;quot;);&lt;br /&gt;
tcp.HTTPSetHeaderField(&amp;quot;Accept-Language&amp;quot;,&amp;quot;en&amp;quot;);&lt;br /&gt;
tcp.HTTPSetHeaderField(&amp;quot;Connection&amp;quot;,&amp;quot;Close&amp;quot;);&lt;br /&gt;
If not tcp.HTTPSend Then&lt;br /&gt;
  Message(&amp;quot;Ошибка отправки запроса клиентом!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
  exit;&lt;br /&gt;
EndIf;&lt;br /&gt;
Message(&amp;quot;Клиент отослал запрос: &amp;quot;+_NEWLINE+tcp.HTTPHeaderAsString);&lt;br /&gt;
//Очистим заголовок, чтобы убедиться, что он придет назад с сервера&lt;br /&gt;
tcp.HTTPClear();&lt;br /&gt;
&lt;br /&gt;
//Ожидание пакета на сервере&lt;br /&gt;
While 1 Do&lt;br /&gt;
  аСервер.Wait(10,4);&lt;br /&gt;
  аКлиент:=аСервер.Accept();&lt;br /&gt;
  If not isEmpty(аКлиент) Then&lt;br /&gt;
    Break;      &lt;br /&gt;
  EndIf;&lt;br /&gt;
EndDo;&lt;br /&gt;
&lt;br /&gt;
Message(&amp;quot;Сигнал от: &amp;quot;+аКлиент.PeerAddress,&amp;quot;I&amp;quot;);&lt;br /&gt;
If not аКлиент.HTTPReceiveHeader Then&lt;br /&gt;
  Message(&amp;quot;Ошибка получения запроса сервером!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
  exit;&lt;br /&gt;
EndIf;&lt;br /&gt;
//Добавим к принятому заголовку дополнительное поле&lt;br /&gt;
аКлиент.HTTPSetHeaderField(&amp;quot;Hello&amp;quot;,&amp;quot;World&amp;quot;);&lt;br /&gt;
//Отсылаем назад принятый заголовок&lt;br /&gt;
If not аКлиент.HTTPSend Then&lt;br /&gt;
  Message(&amp;quot;Ошибка отправки ответа сервером!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
  exit;&lt;br /&gt;
EndIf;&lt;br /&gt;
Message(&amp;quot;Успешный обмен (сервер)!&amp;quot;,&amp;quot;I&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
аКлиент.Disconnect();&lt;br /&gt;
&lt;br /&gt;
//Получение ответа клиентом&lt;br /&gt;
If not tcp.HTTPReceive Then&lt;br /&gt;
  Message(&amp;quot;Ошибка получения ответа клиентом!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
  exit;&lt;br /&gt;
EndIf;&lt;br /&gt;
Message(&amp;quot;Клиент получил ответ: &amp;quot;+_NEWLINE+tcp.HTTPHeaderAsString);&lt;br /&gt;
Message(&amp;quot;Успешный обмен (клиент)!&amp;quot;,&amp;quot;I&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>