如何在DataSnap 2010中获取客户端IP

4

有人能告诉我如何从服务器端获取连接会话的客户端IP地址吗?

谢谢。

2个回答

5
procedure TMyDSService.DataSnapServerConnect(DSConnectEventObject: TDSConnectEventObject);
var
  Conn: TIdTCPConnection;
begin
   Conn := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id);
   Trace('Client ' + Conn.Socket.Binding.PeerIP +':' + IntToStr(Conn.Socket.Binding.PeerPort));
   Trace('Client info: ' + DSConnectEventObject.ChannelInfo.Info);
end;

DSConnectEventObject.ChannelInfo.Info 总是返回服务器的 IP 地址,这是一个 bug 还是我漏掉了什么? - Alin Sfetcu

3
您可以查询Request.RemoteAddr来获取连接客户端的IP地址。

RemoteAddr是TWebRequest的一个方法,我认为在Datasnap中无法访问。 - Francis Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接