2013-01-11 45 views
4

我知道我們能在客戶端(主機)的IP連接已經在那個時候我們將有運輸屬性,因爲建立後失去客戶端IP地址:如何獲得後得到了連接在扭曲

self.transport.getPeer() 

但當它斷開與服務器的連接時,如何在扭曲的TCP服務器上獲取客戶端的IP地址,如同斷開連接之後那樣。

+0

你不能連接的過程中做到這一點,它存儲爲一個屬性,那麼只需閱讀稍後 –

回答

10

它有點晚了。我建議你保存這些信息。例如:

class YourProtocol(protocol.Protocol): 

    def connectionMade(self): 
     self._peer = self.transport.getPeer() 

    def connectionLost(self): 
     print 'Lost connection from', self._peer 
+0

謝謝,爲你解答。你確定我們不能在連線丟失的時候得到 –

+0

好的,我第一次錯了。其實self.transport.getPeer()調用從connectionLost()回調工作正常。我測試了這個TCP連接。 我也可以從實現中看到,在DatagramProtocol子類的情況下,您不會擁有self.protocol屬性,因此對於UDP。這是你的情況嗎? –

+0

exceptions.TypeError:connectionLost()只需要1個參數(給出2個) –

2

雖然這已經回答了,我想我會很快加礦,所以我不會在將來忘記了這一點......我們知道,對於扭曲的文檔是..好扭曲。 ..

def connectionLost(self): 
    ip, port = self.transport.client 
    print ip 
    print port 

通過使用上面,所以可以只對陣過什麼數據庫或意味着你必須跟蹤客戶的IP /端口。

我結束了使用print vars(self.transport),看到在輸出/控制檯的客戶對象......在這裏使用經典的PHP調試發現