I know we can get the client (host) IP after connection has been established because at that time we will have transport attribute:
self.transport.getPeer()
Its a little late for that. I suggest you save this information when you have it. For example:
class YourProtocol(protocol.Protocol): def connectionMade(self): self._peer = self.transport.getPeer() def connectionLost(self): print 'Lost connection from', self._peer