DataSnap中能将客户端的Socket连接与回叫标识绑定吗?
客户端注册回叫标识(客户端似乎不能取自己的Socket连接): DSClientCallbackChannelManager1.ManagerId := ClientId;
DSClientCallbackChannelManager1.RegisterCallback(CallbackId,
TDataSnapCallBack.Create);
服务端取客户端的Socket连接:procedure TServerContainer1.DSServer1Connect(
DSConnectEventObject: TDSConnectEventObject);
begin
DSConnectEventObject.ChannelInfo.ClientInfo.IpAddress;
DSConnectEventObject.DbxConnection.Destroy;
end;
客户端注册回叫标识(客户端似乎不能取自己的Socket连接): DSClientCallbackChannelManager1.ManagerId := ClientId;
DSClientCallbackChannelManager1.RegisterCallback(CallbackId,
TDataSnapCallBack.Create);
服务端取客户端的Socket连接:procedure TServerContainer1.DSServer1Connect(
DSConnectEventObject: TDSConnectEventObject);
begin
DSConnectEventObject.ChannelInfo.ClientInfo.IpAddress;
DSConnectEventObject.DbxConnection.Destroy;
end;
解决方案 »
- DELPHI三层开发,分布式架构研发群35504157
- 请帮小弟个忙!急!!!
- 我调用一个存储过程,怎么能做一个进度条来反映存储过程执行的情况?
- 在DELPHI中怎么执行系统命令?
- 请问谁有Delphi5的update pack1的sn?
- 急需帮助:怎样把pchar类型转换为stringlist类型?
- 请高手指点,关于类作为参数
- 如何让dbgrid的列自动适应内容的宽度;另外如何双击两列交界,让dbgrid的列自动适应内容的宽度?
- delphi6好多新东西,看不懂,谁有介绍([email protected])收到后立即加分
- 菜菜题:关于DLL的生成、调用!
- DELPHI 这是要王者归来的节奏吗?英巴卡迪诺新年战略:支持Linux【提供中文手册】
- delphi如何对SQL表中一行记录其中一个字段存取多个jpg文件
DataSnap TCP的Socket连接,就是一种TCP/IP的连接方式。你说的可能是,客户端登录时机制。
通常我们要把客户端的计算机名,IPf地址,用户名,密码,上传服务器端。决定是否连接,事实上忆经连接,不然如何辨别用户信息和密码是否正确。确定登录成功,才能读取数据。登录成功的同时,还可回复一个成功的信息。
1、限定用户的IP地址;
2、同一用户,不能重复登录;
3、偿试登录次数,不能超过次数。你的问题,应该是服务器对客户端的判断处理。
procedure TServerContainer1.DSServer1Connect(
DSConnectEventObject: TDSConnectEventObject);
begin
DSConnectEventObject.ChannelInfo.ClientInfo.IpAddress;
DSConnectEventObject.DbxConnection.Destroy;
end;上面的代码就是服务端拒绝客户端连接,用于限制最大连接数时使用现在想在服务端根据ClientId和CallbackId进行相应的处理,并不限于IP
如:
一、相同的ClientId重复登录,提示密码泄露;
二、相同的ClientId重复登录,直接拒绝(DbxConnection.Destroy)
三、连接数达到200或设定的某值后,只有VIP ClientId可以连接,其它的直接拒绝(DbxConnection.Destroy)
以及更多其它情况
这就需要将ClientId、CallbackId和实际的DbxConnection联系起来。