Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erklärung und einfache Beispiele der verdrehten Programmierung in Python
Detaillierte Erklärung der verdrehten Programmierung in Python
Vorwort:
Ich bin nicht gut im Schreiben von Socket-Code. Zum einen ist es schwieriger, in C zu schreiben, zum anderen habe ich dafür normalerweise keinen Bedarf. Erst als ich es wirklich verstehen wollte, wurde mir klar, dass ich in diesem Bereich wirklich Verbesserungsbedarf hatte. Kürzlich musste ich aus Projektgründen etwas Python-Code schreiben und habe herausgefunden, wie cool es ist, Sockets unter Python zu entwickeln.
Bei den meisten Sockets müssen Benutzer nur auf drei Ereignisse achten. Dabei handelt es sich um das Erstellen, Löschen sowie Senden und Empfangen von Daten. Die Twisted-Bibliothek in Python kann uns dabei helfen, dieses Ziel zu erreichen, und ihre Verwendung ist nicht problematisch. Der folgende Code stammt von der Twistedmatrix-Website. Ich finde ihn ziemlich gut, deshalb werde ich ihn hier veröffentlichen, um ihn mit Ihnen zu teilen. Wenn Sie einen Test durchführen müssen, verwenden Sie einfach Telnet Localhost 8123. Wenn Sie Signale in Twisted verarbeiten müssen, können Sie zuerst die Signalfunktion registrieren, in der Signalfunktion Reaktor.stop () aufrufen und dann wird Twisted weiterhin stop_factory aufrufen, sodass Sie die verbleibenden Bereinigungsarbeiten fortsetzen können.
from twisted.internet.protocol import Factory from twisted.protocols.basic import LineReceiver from twisted.internet import reactor class Chat(LineReceiver): def __init__(self, users): self.users = users self.name = None self.state = "GETNAME" def connectionMade(self): self.sendLine("What's your name?") def connectionLost(self, reason): if self.name in self.users: del self.users[self.name] def lineReceived(self, line): if self.state == "GETNAME": self.handle_GETNAME(line) else: self.handle_CHAT(line) def handle_GETNAME(self, name): if name in self.users: self.sendLine("Name taken, please choose another.") return self.sendLine("Welcome, %s!" % (name,)) self.name = name self.users[name] = self self.state = "CHAT" def handle_CHAT(self, message): message = "<%s> %s" % (self.name, message) for name, protocol in self.users.iteritems(): if protocol != self: protocol.sendLine(message) class ChatFactory(Factory): def __init__(self): self.users = {} # maps user names to Chat instances def buildProtocol(self, addr): return Chat(self.users) def startFactory(self): print 'start' def stopFactory(self): print 'stop' reactor.listenTCP(8123, ChatFactory()) reactor.run()
Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!
Ausführlichere Erklärungen und einfache Beispiele für Twisted-in-Python-Programmierung finden Sie auf der chinesischen PHP-Website!