簡體   English   中英

在RemObjects Web服務中獲取客戶端IP地址

[英]Get clients ip address in a RemObjects webservice

我有一個使用RemObjects通過Delphi XE實現的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,以便我可以在進一步調用時隨時獲取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM