Sockets in ZMQ wird einfach an eine Schnittstelle gebunden und ist dann in der Lage Nachrichten direkt zu empfangen, wie folgt aus:ZMQ in Python: New Socket-Objekt für jede eingehende Verbindung
socket.bind("tcp://*:5555")
message = socket.recv()
Da mehrere Verbindungen Daten senden dieser Sockel gleichzeitig, , wie die verschiedenen Absender zu unterscheiden?
Auf der anderen Seite, mit regelmäßigen Steckdosen, werden eingehende Verbindungen zunächst angenommen, die eine neue Fassung, wie diese laicht: können leicht unterschieden werden
serversocket.bind((socket.gethostname(), 5555))
serversocket.listen()
(clientsocket, address) = serversocket.accept()
Hier werden die verschiedenen Absendern, da jeder durch empfangen wird eine andere Steckdose.
Was ist der beste Weg, um von der Nachrichten- und Warteschlangen-gepufferten Kommunikation von ZMQ zu profitieren, aber dennoch eine beliebige Anzahl unterscheidbarer Eins-zu-Eins-Verbindungen zu erstellen, sobald sie angefordert werden?
Danke, das hat geholfen! Folgefragen: Kann das Schema, nach dem der 'ROUTER' die Client-ID wählt, konfiguriert werden? Wie persistent ist solch eine vom Server generierte Client-ID? Unter welchen Umständen ändert sich das? Kann man das kontrollieren/erkennen? –
Die einzige Konfiguration, die mir bekannt ist, ist via 'setsockopt'. Jede automatisch generierte ID bleibt für die Dauer einer Verbindung gleich. Obwohl ich nicht sicher bin, ob dies die stille Wiederverbindung von Zeromq abdeckt, wenn die zugrunde liegende Netzwerkverbindung ausfällt. Normalerweise setze ich IDs über 'setsockopt', da es mir ermöglicht, später zu verbinden, zu senden, die Verbindung zu trennen und wieder herzustellen und Status-Updates von früheren Anfragen zu erhalten. – David