我有一个通过 Delphi XE 使用 RemObjects 实现的 web 服务,我想知道客户请求的 IP 地址。我的服务继承自TRORemoteDataModule
,我还没有找到任何方法或对象来做到这一点。
有什么建议吗?谢谢
注意:我认为我需要的信息是在方法中self.transport.GetTransportObject()
返回但它返回一个 TObject 我不知道如何提取这些信息
我有一个通过 Delphi XE 使用 RemObjects 实现的 web 服务,我想知道客户请求的 IP 地址。我的服务继承自TRORemoteDataModule
,我还没有找到任何方法或对象来做到这一点。
有什么建议吗?谢谢
注意:我认为我需要的信息是在方法中self.transport.GetTransportObject()
返回但它返回一个 TObject 我不知道如何提取这些信息
这就是我从 SuperChannel 获得它的方式:
procedure TMyInterface.RORemoteDataModuleGetDispatchInfo(const aTransport: IROTransport; const aMessage: IROMessage);
var
tcpinfo: IROTCPTransport;
Session: TCustomSession;
szClientIP : String;
begin
Session := TCustomSession(Self.Session);
if Supports(aTransport, IROTCPTransport, tcpinfo) then
begin
szClientIP := tcpinfo.ClientAddress;
if (not Session.ShownTCP) or (Session.TCPAddress <> szClientIP) then
begin
Session.TCPAddress := szClientIP;
Session.Report(leInformation, 'TCP address ' + szClientIP);
Session.ShownTCP := True;
end;
end
else
begin
Session.Report(leInformation, 'TCP address not available');
end;
end;
使用它的具体操作取决于您,但您必须在设置时获取它,并将其存储在会话对象中,如果您想稍后再使用它。我实现了一个自定义会话来保存客户端 IP,以便我可以在进一步的调用中随时获取它。