Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 108

•  TDictionary Custom Sort  6 185

•  Fast Watermark Sources  5 986

•  3D Designer  8 874

•  Sik Screen Capture  6 324

•  Patch Maker  6 740

•  Айболит (remote control)  6 733

•  ListBox Drag & Drop  5 592

•  Доска для игры Реверси  96 045

•  Графические эффекты  6 947

•  Рисование по маске  6 208

•  Перетаскивание изображений  5 119

•  Canvas Drawing  5 487

•  Рисование Луны  5 194

•  Поворот изображения  4 742

•  Рисование стержней  3 349

•  Paint on Shape  2 592

•  Генератор кроссвордов  3 487

•  Головоломка Paletto  2 787

•  Теорема Монжа об окружностях  3 588

•  Пазл Numbrix  2 358

•  Заборы и коммивояжеры  3 036

•  Игра HIP  1 991

•  Игра Go (Го)  1 916

•  Симулятор лифта  2 274

•  Программа укладки плитки  1 977

•  Генератор лабиринта  2 432

•  Проверка числового ввода  2 110

•  HEX View  2 448

•  Физический маятник  2 068

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Обратная связь от MSSQL-сервера к клиенту



Автор: Delirium

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Обратная связь от MSSQL-сервера к клиенту

На форуме постоянно возникает вопрос -
"Как получить обновление данных, по событию, а не таймером",
чтобы снять его раз и навсегда привожу код dll-ки, которая
является Extended Stored Procedure с единственной функцией -
отправкой UDP-broadcast сообщения.

Зависимости: Windows, SysUtils, IdUDPClient
Автор:       Delirium, VideoDVD@hotmail.com, ICQ:118395746, Москва
Copyright:   Delirium (Master BRAIN) 2003
Дата:        24 октября 2003 г.
***************************************************** }

library Messager;

uses
  Windows,
  SysUtils,
  IdUDPClient;

function srv_rpcparams(srvproc: Pointer): integer; cdecl; external 'opends60.dll'
name 'srv_rpcparams';

function srv_paramdata(srvproc: Pointer; n: integer): integer; cdecl; external
'opends60.dll' name 'srv_paramdata';

function srv_paramlen(srvproc: Pointer; n: integer): integer; cdecl; external
'opends60.dll' name 'srv_paramlen';

procedure SendUDPMessage(Params: Pointer); stdcall; cdecl; export;
var
  id: TIdUDPClient;
  Msg: string;
  Host, Port: string;
begin
  try
    if srv_rpcparams(Params) < 2 then
      exit;
    Host := Copy(PChar(srv_paramdata(Params, 1)), 1, srv_paramlen(Params, 1));
    Port := Copy(Host, Pos(':', Host) + 1, Length(Host));
    Delete(Host, Pos(':', Host), Length(Host));
    Msg := Copy(PChar(srv_paramdata(Params, 2)), 1, srv_paramlen(Params, 2));
    id := TIdUDPClient.Create(nil);
    id.BroadcastEnabled := True;
    id.Host := Host;
    id.Port := StrToInt(Port);
    id.ReceiveTimeout := -1;
    id.Send(Msg);
    id.Free;
  except
  end;
end;

exports SendUDPMessage;

begin
end.

Пример использования:

Для регистрации на MSSQL скопировать dll в c:\Program Files\Microsoft SQL Server\80\Tools\Binn и исполнить скрипт sp_addextendedproc 'SendUDPMessage', 'Messager.dll' На клиенте рекомендую использовать компонент TIdUDPServer. Передача сообщений осуществляется так exec SendUDPMessage '255.255.255.255:8080', 'Привет!' где 255.255.255.255 - broadcast маска, но можно написать и конкретный адрес (192.168.1.10), 8080 - выбранный для использования порт.








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте