Python:asynchrone tcp socketserver
-
21-09-2019 - |
Vra
Ek is op soek http://docs.python.org/library/socketserver.html om te probeer en te hanteer asynchrone versoeke met die socketserver in python.Aan die onderkant is daar'n voorbeeld, maar dit maak nie sin nie.Dit sê jy gebruik port 0 wat dui'n arbitrêre ongebruikte hawe.Maar hoe weet jy wat die hawe te gebruik vir die kliënt as hulle nie in dieselfde program?Ek het nie heeltemal verstaan hoe om te maak dit nuttig.
Oplossing
Sedert die kliënt in dieselfde script as die bediener is geïmplementeer, die hawe is bekend. In 'n werklike wêreld scenario, moet jy 'n hawe vir jou bediener spesifiseer. Behalwe laat jou kliënte weet op watter hawe aan te sluit, jy mag ook nodig om sodat jy firewalls kan oopmaak tussen jou kliënte en jou bediener weet.
Ander wenke
In die voorbeeld wat jy gekoppel is, is hulle haal die hawe:
# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 0
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
Maar jy moet regtig kyk na www.twistedmatrix.com as jy ernstig is oor die skryf van asinkroniseer hantering is:)
Jy moet die hawe wat aan die socketserver
sodra die bind
gedoen haal: in hierdie geval, sal dit waarskynlik wees deur ip, port = server.server_address
Die arbitrêre hawe is net as jy wil 'n bediener te skep sonder om 'n hawe. Die bedryfstelsel sal 'n beskikbare hawe toewys
Natuurlik moet daar ook 'n manier waarop hawe te bind spesifiseer te wees.
server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address
...
client(ip, port, "Hello World 1")
Die PORT waarde 0 sê: "Ek gee nie om wat poort nommer dit is," so die server_address se port
waarde is wat deur die ThreadedTCPServer () oproep. Dit is nie nul. Later, jy slaag dat port
waarde aan die kliënt, wat dit gebruik.