用Remote Data Module做数据模块时怎么捕捉连接到服务器的客户端数量?(20分)

  • 主题发起人 主题发起人 neo40
  • 开始时间 开始时间
N

neo40

Unregistered / Unconfirmed
GUEST, unregistred user!
用Remote Data Module做数据模块时怎么捕捉连接到服务器的客户端数量?
我在窗体里定义了一个函数和一个全局变量
iClient:Integer;
procedure TForm1.UpdateClient(Inc:Integer);
begin
iClient:=iClient+Inc
Label2.Caption:=IntToStr(Inc);
end;

Data Module的Create事件里调用了这个函数
...
implementation
uses Unit1;
...
procedure TSERVER.RemoteDataModuleCreate(Sender: TObject);
begin
Form1.UpdateClient(1);
end;

服务器会死掉,这是怎么回事。
而且把这两段代码去掉就能正常运行。
请高手指教
==========================================
 
可能与客户端以线程方式联接有关系,试试在RemoteDataModuleCreate里发消息给Form1
 
客户端有效连接数据时应该有一个登录记录,用来记录用户名、电脑名、访问模块、上下线时间等等,你可以用这些登录系统的信息来确定连接数量;
 
iClient:Integer;
procedure TForm1.UpdateClient(Inc:Integer);
begin
iClient:=iClient+Inc
//Label2.Caption:=IntToStr(Inc);[:D]
end;

Data Module的Create事件里调用了这个函数
...
implementation
uses Unit1;
...
procedure TSERVER.RemoteDataModuleCreate(Sender: TObject);
begin
Form1.UpdateClient(1);
end;
 
上面的代码能取得正确的客户端数量吗?还是定义接口吧,如果上面的代码能取得正确的数字,我就有点想不通了。道理很简单因为应用服务器是多实例的,在使用Apartment模式时。
 
将 iClient:Integer;定义在 在服务器的主程序(MainForm中),Data Module的Create事件里调用即可。
 
兄弟,看李维的书,里面讲到了,好想是 《ADO啥的》
 
Label2.Caption:=IntToStr(Inc);
VCL多线程访问冲突,所以死掉,你可以画布textout()方式进行。
 
在服务器端定义接口方法吧,
在客户端连接是调用该方法
 
后退
顶部