5

Delphi XE上でRemObjectsを使用して実装されたWebサービスがあり、クライアントの請願のIPアドレスを知りたいです。私のサービスは継承しTRORemoteDataModuleますが、それを行うためのメソッドやオブジェクトが見つかりません。

なにか提案を?ありがとう

注:必要な情報はメソッドself.transport.GetTransportObject()に返されると思いますが、TObjectが返されるため、この情報を抽出する方法がわかりません。

4

2 に答える 2

4

これは、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 を保持するカスタム セッションを実装して、以降の呼び出しでいつでも取得できるようにしました。

于 2012-04-23T08:56:13.333 に答える
0

ここにそれを行う方法があります

http://wiki.remobjects.com/wiki/Server_FAQs_%28RemObjects_SDK%29#How_can_I_get_IP_address_of_the_remote_client.3F

于 2012-04-23T08:24:11.867 に答える