Difference between revisions of "IPConnection.Disconnect"
m (1 revision imported) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 17: | Line 17: | ||
== Синтаксис == | == Синтаксис == | ||
<code> | <code> | ||
− | {{Grey|IPConnection.}}'''Disconnect'''() | + | {{Grey|IPConnection.}}'''Disconnect'''({{Optional|<Быстрое закрытие соединения (INT)>{{Default|{{Eq}}0}}}}) |
</code> | </code> | ||
+ | ==== Аргументы ==== | ||
+ | * <code>''<Быстрое закрытие соединения (INT)>''</code> - Аргумент позволяет закрыть соединение быстро, но, возможно, не в полной мере корректно. Корректно закрытое соединение получает остатки данных, посылаемых сервером, что может замедлить закрытие соединения для некоторых типов серверов. Рекомендуется использовать обычное (медленное) закрытие соединения, если это не вызывает замедления работы. По умолчанию, при удалении объекта, система использует медленное закрытие соединения. | ||
== Примеры == | == Примеры == |
Latest revision as of 18:07, 20 November 2021
Disconnect (Разорвать соединение) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция выполняет разрыв связи для TCP/IP соединения, также освобождает слушающий порт и удаляет сервер, если это соединение серверное.
Синтаксис
IPConnection.Disconnect(<Быстрое закрытие соединения (INT)>=0)
Аргументы
<Быстрое закрытие соединения (INT)>
- Аргумент позволяет закрыть соединение быстро, но, возможно, не в полной мере корректно. Корректно закрытое соединение получает остатки данных, посылаемых сервером, что может замедлить закрытие соединения для некоторых типов серверов. Рекомендуется использовать обычное (медленное) закрытие соединения, если это не вызывает замедления работы. По умолчанию, при удалении объекта, система использует медленное закрытие соединения.
Примеры
//Данный пример совмещает серверную и клиентскую часть в одном фрагменте кода. //Серверная часть получает http запрос и отдает его, добавляя одно поле, после чего клиентская часть получает пакет и выводит его в лог аСервер:=IPConnection.ListenEx(8000); URL:="http://127.0.0.1:8000"; //Инициализация и отсылка пакета If pos("//",URL)>0 Then tearStr(URL,"//"); EndIf; СтрДоб:=URL; URL:=tearStr(СтрДоб,"/"); tcp:=IPConnection.Connect(URL); if not tcp.IsConnected Then Message("Ошибка соединения с сервером!","!"); Exit; EndIf; СтрДоб:="/"+СтрДоб; tcp.HTTPSetOperation("GET "+СтрДоб+" HTTP/1.0"); tcp.HTTPSetHeaderField("Host",tcp.HTTPPunycodeEncode(URL)); tcp.HTTPSetHeaderField("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); tcp.HTTPSetHeaderField("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); tcp.HTTPSetHeaderField("Accept-Language","en"); tcp.HTTPSetHeaderField("Connection","Close"); If not tcp.HTTPSend Then Message("Ошибка отправки запроса клиентом!","!"); exit; EndIf; Message("Клиент отослал запрос: "+_NEWLINE+tcp.HTTPHeaderAsString); //Очистим заголовок, чтобы убедиться, что он придет назад с сервера tcp.HTTPClear(); //Ожидаем пакета на сервере While 1 Do аСервер.Wait(10,4); аКлиент:=аСервер.Accept(); If not isEmpty(аКлиент) Then Break; EndIf; EndDo; Message("Сигнал от: "+аКлиент.PeerAddress,"I"); If not аКлиент.HTTPReceiveHeader Then Message("Ошибка получения запроса сервером!","!"); exit; EndIf; //Добавим к принятому заголовку дополнительное поле аКлиент.HTTPSetHeaderField("Hello","World"); //Отсылаем назад принятый заголовок If not аКлиент.HTTPSend Then Message("Ошибка отправки ответа сервером!","!"); exit; EndIf; Message("Успешный обмен (сервер)!","I"); аКлиент.Disconnect(); //Получение ответа клиентом If not tcp.HTTPReceive Then Message("Ошибка получения ответа клиентом!","!"); exit; EndIf; Message("Клиент получил ответ: "+_NEWLINE+tcp.HTTPHeaderAsString); Message("Успешный обмен (клиент)!","I");