我在linux上使用reactor.listenTCP運行TCP服務器。Twisted reactor.listenTCP間歇性地無法正常連接
所有工作好幾個小時(或幾天),然後發生一些事情,客戶端可以連接,但他們立即斷開服務器。
我的協議實現中沒有任何命令會斷開連接。 客戶端實現中沒有任何內容會導致此類斷開連接。
服務器間歇性地向使用sendLine(data)在用戶列表中找到的所有用戶發送一些數據。
我想知道如果我的意思是執行一些操作時,客戶端斷開連接,我已經錯過了AMD這導致套接字問題。
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()
--->在別處在主循環類是定期運行代碼:
for client in self.users:
client.sendLine(data)
請附上一個簡單的,自包含的,正確的示例來演示您的問題。這一個不完整。 http://sscce.org/ – Glyph