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.

Was 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.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top