英雄无敌5各级兵种最强:Delphi2010中DataSnap高级技术(3)—DataSnap服务器如何得到客户端...
来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 08:49:03
Delphi2010中DataSnap高级技术(3)—DataSnap服务器如何得到客户端的IP和端口 收藏
作为一个服务器软件,必须做到对客户端强有力的控制,想要控制,就必须得到客户端的网络基本信息,比如客户端IP和端口。有了客户端IP就能随心所欲操控客户端,比如终止某些客户端的连接、限制功能等等。在delphi2010中的datasnap服务器如何获得客户端ip,的确花了我点时间,奇怪为什么这个功能不做的更人性化点呢,功能总是藏着掖着。还得让程序员像寻宝一样摸索,浪费时间。现在把我整理的结果奉献给大家,免得大家在花时间研究这个。另外,通过研究发现,DSConnectEventObject.ChannelInfo.Id 属性实际上是内存地址,并不是一个简单的数字。 以下代码红色部分是关键。uses IdTCPConnection;......procedure TServerContainer1.DSServer1Connect
(DSConnectEventObject: TDSConnectEventObject);
var
ClientConnection: TIdTCPConnection;
begin
with Form1 do
begin
dsShowDataSet.Append;
dsShowDataSet['ClientConnectTime'] := Now; if DSConnectEventObject.ChannelInfo <> nil then
begin
ClientConnection := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id); dsShowDataSet['ClientID'] := DSConnectEventObject.ChannelInfo.Id;
dsShowDataSet['ClientIP'] := ClientConnection.Socket.Binding.PeerIP +
':' + IntToStr(ClientConnection.Socket.Binding.PeerPort);
dsShowDataSet['ServerIP'] := ClientConnection.Socket.Binding.IP + ':' +
IntToStr(ClientConnection.Socket.Binding.Port);
end; dsShowDataSet['ClientUserName'] := DSConnectEventObject.ConnectProperties
[TDBXPropertyNames.UserName];
dsShowDataSet['ClientUserPassword'] :=
DSConnectEventObject.ConnectProperties[TDBXPropertyNames.Password];
dsShowDataSet['ServerInfo'] := DSConnectEventObject.ConnectProperties
[TDBXPropertyNames.ServerConnection];
dsShowDataSet.Post;
end;
end; 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunstone/archive/2009/12/12/4990189.aspx
作为一个服务器软件,必须做到对客户端强有力的控制,想要控制,就必须得到客户端的网络基本信息,比如客户端IP和端口。有了客户端IP就能随心所欲操控客户端,比如终止某些客户端的连接、限制功能等等。在delphi2010中的datasnap服务器如何获得客户端ip,的确花了我点时间,奇怪为什么这个功能不做的更人性化点呢,功能总是藏着掖着。还得让程序员像寻宝一样摸索,浪费时间。现在把我整理的结果奉献给大家,免得大家在花时间研究这个。另外,通过研究发现,DSConnectEventObject.ChannelInfo.Id 属性实际上是内存地址,并不是一个简单的数字。 以下代码红色部分是关键。uses IdTCPConnection;......procedure TServerContainer1.DSServer1Connect
(DSConnectEventObject: TDSConnectEventObject);
var
ClientConnection: TIdTCPConnection;
begin
with Form1 do
begin
dsShowDataSet.Append;
dsShowDataSet['ClientConnectTime'] := Now; if DSConnectEventObject.ChannelInfo <> nil then
begin
ClientConnection := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id); dsShowDataSet['ClientID'] := DSConnectEventObject.ChannelInfo.Id;
dsShowDataSet['ClientIP'] := ClientConnection.Socket.Binding.PeerIP +
':' + IntToStr(ClientConnection.Socket.Binding.PeerPort);
dsShowDataSet['ServerIP'] := ClientConnection.Socket.Binding.IP + ':' +
IntToStr(ClientConnection.Socket.Binding.Port);
end; dsShowDataSet['ClientUserName'] := DSConnectEventObject.ConnectProperties
[TDBXPropertyNames.UserName];
dsShowDataSet['ClientUserPassword'] :=
DSConnectEventObject.ConnectProperties[TDBXPropertyNames.Password];
dsShowDataSet['ServerInfo'] := DSConnectEventObject.ConnectProperties
[TDBXPropertyNames.ServerConnection];
dsShowDataSet.Post;
end;
end; 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunstone/archive/2009/12/12/4990189.aspx
Delphi2010中DataSnap高级技术(3)—DataSnap服务器如何得到客户端...
Delphi2010中DataSnap高级技术(3)—DataSnap服务器如何得到客户端...
Delphi2010中DataSnap高级技术(2)—DataSnap服务端和客户端发布分...
Delphi2010中DataSnap高级技术(7)—TDSServerClass中Lif...
Delphi2010中DataSnap高级技术(1)—为DataSnap系统服务程序添加描...
Delphi2010中DataSnap高级技术(6)—加强服务程序对访问者的控制能力 - ...
Delphi2010中DataSnap高级技术(4)—TCP keepAlive和Keep...
Delphi2010中DataSnap高级技术(4)—TCP keepAlive和Keep...
Delphi2010中DataSnap高级技术(5)—建立稳定服务程序之TCP心跳包的使用...
Delphi2010中DataSnap高级技术(5)—建立稳定服务程序之TCP心跳包的使用...
服务器如何在SOCKET通讯中知道客户端断开连接或掉线了???[
DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 201...
SSH客户端命令 — IT技术 - 赛迪网
Qt客户端程序建立和服务器通信
如何在 Windows Server 中配置权威时间服务器
如何在 Windows Server 2003 中设置 FTP 服务器
为服务器控件添加javascript客户端事件 - 网页制作参考
如何建立ftp服务器
如何建FTP服务器?
如何建立DHCP服务器
如何在WebQuest中发展学生的高级思维能力
手排车高级驾驶技术
摩登舞高级舞步技术——术语与示范
高级技术分析—交易系统的原理、构建与实战