OnUsr1Connection

From SunFlurry wiki
Jump to: navigation, search
  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;