2012-04-23 15 views
5

Mam usługę sieciową zaimplementowaną przy użyciu RemObjects przez Delphi XE i chcę znać adres IP petycji klientów. Moja usługa dziedziczy po TRORemoteDataModule i nie znalazłem żadnej metody ani obiektu, aby to zrobić.Uzyskaj adres IP klienta w serwisie internetowym RemObjects

Jakieś sugestie? Dzięki

Uwaga: Myślę, że informacje, które muszę wraca w metodzie self.transport.GetTransportObject() ale zwraca TObject i nie wiem, jak wydobyć te informacje

Odpowiedz

4

to jak mam go od 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; 

Specyfika tego, co robisz z nim, zależy od ciebie, ale musisz go pobrać, jak jest skonfigurowany, i przechowywać go w obiekcie sesji, jeśli chcesz go później odebrać. Zaimplementowałem niestandardową sesję do przechowywania IP klienta, aby móc ją uzyskać w dowolnym czasie.

+0

To działa. Potrzebowałem tylko funkcji Supports, do załadowania obiektu tcpInfo. Wielkie dzięki –

+0

W tej chwili TRORemoteDataModule implementuje właściwość Transport, więc nie musisz pisać takiego kodu w OnGetDispatchInfo. Możesz po prostu wykonać go z funkcji serwera. – gabr

0
+0

Znalazłem, ale jest to nieprzydatne. Nie mam IServerChannelInfo. Może w delphi jest nieco inny –

+0

Niestety nie mam zainstalowanych RemObjects, więc staram się pomóc w oparciu o słabą dokumentację dostarczoną przez RemObjects. http://wiki.remobjects.com/wiki/Server_FAQs_%28RemObjects_SDK%29#How_can_I_log_details_.28IP_address.2C_method_name.2C_parameters.2C_duration.2C_etc..29_of_every_call_made_to_a_server.3F – RBA

Powiązane problemy