【发布时间】:2012-12-26 01:23:58
【问题描述】:
我知道我们可以在建立连接后获取客户端(主机)IP,因为那时我们将拥有传输属性:
self.transport.getPeer()
但是当客户端失去与服务器的连接时,我如何在扭曲的 TCP 服务器中获取客户端的 IP 地址,就像在它断开连接之后一样。
【问题讨论】:
-
你不能在连接过程中这样做吗,将其存储为属性,然后稍后再读取
我知道我们可以在建立连接后获取客户端(主机)IP,因为那时我们将拥有传输属性:
self.transport.getPeer()
但是当客户端失去与服务器的连接时,我如何在扭曲的 TCP 服务器中获取客户端的 IP 地址,就像在它断开连接之后一样。
【问题讨论】:
这有点晚了。我建议您在拥有此信息时保存它。例如:
class YourProtocol(protocol.Protocol):
def connectionMade(self):
self._peer = self.transport.getPeer()
def connectionLost(self):
print 'Lost connection from', self._peer
【讨论】:
虽然已经回答了这个问题,但我想我会尽快添加我的,这样我以后就不会忘记这个了...众所周知,Twisted 的文档是 .. 扭曲的...
def connectionLost(self):
ip, port = self.transport.client
print ip
print port
通过使用上述方法,您可以简单地将 ip/端口与任何数据库或您拥有的跟踪客户端的方式进行匹配。
我最终找到了使用print vars(self.transport) 并在输出/控制台中看到客户端对象...在这里使用经典的 php 调试
【讨论】: