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