ツイストを使用して Python で記述されたサーバー アプリケーションがあり、プロトコル (ボットトーク) のインスタンスを強制終了する方法を知りたいです。新しいクライアント接続を取得するたびに、メモリ内にインスタンスが表示されます (print Factory.clients) .. しかし、サーバー側からこれらのインスタンスの 1 つを強制終了したいとしましょう (特定のクライアント接続をドロップします)。これは可能ですか?lineReceived を使用してフレーズを探してみました。一致する場合は、self.transport.loseConnection() を使用します。しかし、それはインスタンスまたは何かを参照していないようです..
class bottalk(LineReceiver):
from os import linesep as delimiter
def connectionMade(self):
Factory.clients.append(self)
print Factory.clients
def lineReceived(self, line):
for bots in Factory.clients[1:]:
bots.message(line)
if line == "killme":
self.transport.loseConnection()
def message(self, message):
self.transport.write(message + '\n')
class botfactory(Factory):
def buildProtocol(self, addr):
return bottalk()
Factory.clients = []
stdio.StandardIO(bottalk())
reactor.listenTCP(8123, botfactory())
reactor.run()