3

DSServer次のコードでのonconnectイベントを 使用して、クライアントの IP アドレスとその他のクライアント情報を取得しようとしています。

私の問題は、それDSConnectEventObject.ChannelInfonil毎回です。さらに、IP アドレスを解決できません。

私を助けてください。ありがとうございました。

procedure TWebModule1.DSServer1Connect(DSConnectEventObject: TDSConnectEventObject);
var
     ci: TDBXClientInfo;
begin
     ci := DSConnectEventObject.ChannelInfo.ClientInfo;
     AddLog(Format('Client %s Connected IP: %s, Port: %s', 
         [ci.Protocol, ci.IpAddress, ci.ClientPort])
     );
end;
4

4 に答える 4

0

これはバグです。
以下のコードで実行できます。

procedure TWebModule.DSServerConnect(
  DSConnectEventObject: TDSConnectEventObject);
var _Session: TDSSession;
begin
  try
    if Assigned(DSConnectEventObject.ChannelInfo) then
    begin
      _Session := TDSSessionManager.GetThreadSession;
      if Assigned(_Session) then
      begin
        if _Session.GetData('RemoteAddr') = '' then
          _Session.PutData('RemoteAddr', DSConnectEventObject.ChannelInfo.Info);
      end;
    end;
  except
  end;
end;
于 2014-01-28T03:56:27.947 に答える
0

DataSnap REST ISAPI dll


WebMoudleユニットで、

IP を保存:

TDSSessionManager.GetThreadSession.PutData('RemoteAddr',Request.RemoteAddr);


他のユニットでは、

IP を取得します。

uIP := TDSSessionManager.GetThreadSession.GetData('RemoteAddr');


于 2013-10-12T08:40:12.867 に答える