Как получить обновление данных, по событию, а не таймером

Как получить обновление данных, по событию, а не таймером

{ **** UBPFD *********** by kladovka.net.ru ****
>> Обратная связь от MSSQL-сервера к клиенту
На форуме постоянно возникает вопрос - "", чтобы снять его раз и навсегда привожу код dll-ки, которая является Extended Stored Procedure с единственной функцией - отправкой UDP-broadcast сообщения.
Зависимости: Windows, SysUtils, IdUDPClient
Автор: Delirium, <a href="mailto:VideoDVD@hotmail.com">VideoDVD@hotmail.com</a>, 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 - выбранный для использования порт.

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...