1

私は、reactor.listenTCP を使用して Linux で TCP サーバーを実行しています。

すべてが数時間 (または数日) 正常に機能した後、何かが発生し、クライアントは接続できますが、サーバーによってすぐに切断されます。

私のプロトコルの実装には、切断を指示するものは何もありません。このような切断を引き起こすクライアント実装には何もありません。

サーバーは、sendLine(data) を使用して、ユーザー リストで見つけたすべてのユーザーにデータを断続的に送信します。

クライアントが切断されたときに何らかの操作を実行するつもりなのかどうか疑問に思っています。

class MsgHandler(Protocol):
    def __init__(self, factory):
        self.factory = factory
    def connectionMade(self):
        self.factory.users.append(self)
    def connectionLost(self, reason):
        self.factory.users.remove(self)
    def dataReceived(self, data):
        pass

class outputTcpServerFactory(Factory):
    def __init__(self, users):
        self.users = users
    def buildProtocol(self, addr):
        return MsgHandler(self) 

class Mainloop(object):
    def __init__(self):
        self.users = []
        s = reactor.listenTCP(port, outputTcpServerFactory(self.users))
        reactor.run()

---> mainLoop クラスの他の場所には、定期的に実行されるコードがあります。

for client in self.users:
    client.sendLine(data)
4

1 に答える 1