我有一个使用RemObjects通过Delphi XE实现的网络服务,我想知道客户请愿书的IP地址。我的服务继承自TRORemoteDataModule
,我没有找到任何方法或对象来执行此操作。
有什么建议吗?谢谢
注意:我认为我需要的信息在方法self.transport.GetTransportObject()
中返回,但它返回了一个TObject,我不知道如何提取此信息
这是我从超级频道获得它的方式:
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,以便我可以随时在进一步的调用中获取它。
这里是怎么做的
http://wiki.remobjects.com/wiki/Server_FAQs_%28RemObjects_SDK%29#How_can_I_get_IP_address_of_the_remote_client.3F