Difference between revisions of "OnUsr1Connection"
m (1 revision imported) |
|
(No difference)
| |
Latest revision as of 07:52, 7 February 2021
| OnUsr1Connection (Внешние события) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Прерывающее событие, возникающее при соединении внешней программы по стандартному USR1 протоколу к заранее инициализированному серверу USR1 соединений. Функция-обработчик далее может производить обмен информацией с помощью функций TCP, используя TCP Объект. Событие не может прервать транзакцию в корневом потоке (оно будет ожидать ее окончания). Внутренний USR1 протокол позволяет совершать соединения клиентов с сервером, обмениваться файлами и любой другой информацией. Разработчик не имеет доступа только к части приветствия и обмена паролями, вне приветствия, он может использовать протокол для обмена любой информацией любым способом по своему усмотрению. Если необходимо осуществить соединение без приветствия USR1, можно пользоваться функциями Listen, ConnectRaw и пр.
Более подробное описание протокола ищите в статье USR1 протокол.
Синтаксис
OnUsr1Connection(<TCP Объект (IP Connection)>,<Команда клиента (STRING)>,<Список принятых файлов (LIST)>)
Аргументы
<TCP Объект (IP Connection)>- Объект TCP, для которого осуществлено соединение.<Команда клиента (STRING)>- Дополнительная строковая команда, поступившая от клиента (см. описание протокола)<Список принятых файлов (LIST)>- Если клиент отсылал какие-либо файлы, они будут помещены в системный каталог %TEMP%, полное имя каждого из файлов добавляется в список принятых файлов. После окончания выполнения события, файлы будут автоматически удалены.
Примеры
Function OnUsr1Connection(Соединение,Параметр,спФайлы)
If Параметр="GETPRINTERS" Then //Запрос на список принтеров от клиента
Соединение.SendCmd("OK ");
//Получаем список принтеров
Стр:=GetDefaultPrinter;
Стр0:=Uppercase(Стр);
Try
aList:=GetInstalledPrinters();
For i:=1 To aList.Size() Do
If Стр0<>Uppercase(aList.Get(i)) Then
Стр:=Стр+?(Стр<>"",_NEWLINE)+aList.Get(i);
EndIf;
EndDo;
Except EndTry;
Соединение.SendStr(Стр);
Соединение.Disconnect();
Exit;
ElseIf
...
EndIf;
//Неизвестный режим, разрываем связь
Соединение.SendCmd("BAD ");
Соединение.Disconnect();
EndFunction;