2012-04-23 10 views
5

में क्लाइंट आईपी पता प्राप्त करें मेरे पास डेल्फी एक्सई पर RemObjects का उपयोग करके एक webservice लागू किया गया है और मैं क्लाइंट याचिकाओं के आईपी पते को जानना चाहता हूं। मेरी सेवा TRORemoteDataModule से विरासत में मिली है और मुझे ऐसा करने के लिए कोई विधि या वस्तु नहीं मिली है।एक RemObjects webservice

कोई सुझाव? धन्यवाद

नोट: मुझे लगता है कि जानकारी है कि मैं जरूरत विधि self.transport.GetTransportObject() में लौटने लेकिन यह एक TObject वापस आती है और मैं नहीं जानता कि कैसे इस जानकारी निकालने के लिए

उत्तर

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; 

आप इसके साथ क्या करते हैं इसके बारे में विनिर्देश आपके ऊपर हैं, लेकिन आपको इसे स्थापित करना होगा, और इसे सत्र ऑब्जेक्ट में संग्रहीत करना होगा यदि आप इसे बाद में चुनना चाहते हैं। मैंने क्लाइंट आईपी को पकड़ने के लिए एक कस्टम सत्र लागू किया ताकि मैं इसे और कॉल में कभी भी प्राप्त कर सकूं।

+0

यह काम करता है। TcpInfo ऑब्जेक्ट को लोड करने के लिए मुझे केवल समर्थन फ़ंक्शन की आवश्यकता है। बहुत बहुत धन्यवाद –

+0

फिलहाल, TRORemoteDataModule एक परिवहन प्रॉपर्टी लागू करता है, इसलिए आपको OnGetDispatchInfo में ऐसा कोड लिखना नहीं है। आप इसे सर्वर फ़ंक्शन से निष्पादित कर सकते हैं। – gabr

0
+0

मुझे यह मिला लेकिन यह अनुपयोगी है। मेरे पास IServerChannelInfo नहीं है। हो सकता है कि डेल्फी में थोड़ा अलग –

+0

दुर्भाग्य से मेरे पास RemObjects इंस्टॉल नहीं हैं, इसलिए मैं 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

संबंधित मुद्दे