4

我知道我们可以在建立连接后获取客户端(主机)IP,因为那时我们将具有传输属性:

self.transport.getPeer()

但是当它失去与服务器的连接时,我如何在扭曲的 TCP 服务器中获取客户端的 IP 地址,就像在它断开连接之后一样。

4

2 回答 2

11

这有点晚了。我建议您在拥有此信息时保存它。例如:

class YourProtocol(protocol.Protocol):

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

    def connectionLost(self):
        print 'Lost connection from', self._peer
于 2013-01-11T12:57:51.453 回答
2

虽然这已经得到了回答,但我想我会很快添加我的,所以我以后不会忘记这个......我们知道,Twisted 的文档是......很好扭曲......

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

通过使用上述内容,您可以简单地将 ip/port 与任何数据库或您拥有的跟踪客户端的方式进行匹配。

我最终通过print vars(self.transport)在输出/控制台中使用和查看客户端对象来找到...在这里使用经典的 php 调试

于 2015-09-10T23:53:47.830 回答