Frage

Kann ein Client Daten über einen UNIX-Domain-Socket drücken (AF_UNIX Typ) signalisiert werden besetzt , wenn das Empfangsende nicht mit der Belastung fertig werden?

oder

muss es ein Client-Server-Protokoll, das auf der Buchse Flusskontrolle zu behandeln?

War es hilfreich?

Lösung

Wenn Sie dies im Protokoll enthalten, gibt es keine Möglichkeit für den Server des Client zu sagen, zu pausieren, die Informationen zu senden.

Andere Tipps

Sie können auf jeden Fall tun, ein auf einem UNIX-Domain-Socket senden blockieren. Wenn die Empfang der Empfangsseite Puffer voll ist, oder wenn die Anzahl der im Umlauf befindlichen (nicht gelieferten) Socket-Puffer senden zu hoch ist, blockiert der Absender.

SOCK_STREAM UNIX Domain Sockets wie TCP-Sockets arbeiten. SOCK_DGRAM UNIX Domain Sockets funktionieren wie UDP, mit der Ausnahme, dass UNIX Domain-Datagramme garantiert haben, in Ordnung Lieferung, während UDP-Sockets nachbestellt werden kann oder fallen gelassen. (Auch kann UNIX Domain Sockets verwendet werden Filedeskriptoren zu senden und Benutzerdaten zwischen Prozessen übergeben, können von denen keiner mit TCP, UDP oder Rohrleitungen durchgeführt werden.)

Also, weil in Ordnung Lieferung von allen Arten von UNIX Domain Sockets gewährleistet ist, kann der Empfänger nur empfangen stoppen, wenn es mit anderen Dingen beschäftigt ist, und der Absender wird automatisch gesperrt, wenn es kein mehr Pufferspeicherplatz zur Verfügung (oder wird darauf hingewiesen, dass es nicht mehr Pufferplatz ist, wenn sie auf ihrem Sockel) nicht blockierende Operation angefordert. Dann, wenn der Empfänger wieder beginnt empfängt, wird der Sender erlaubt werden, um mehr zu senden.

Anders als der Server einige Kenntnisse zu haben, wenn es ‚busy‘ und ein bestimmtes Signal zu senden zurück (zum Beispiel HTTP von 503 Dienst nicht verfügbar). Sie können auch die Client-Seite Verbindung zum Timeout nach einer gewissen Zeit eingerichtet, und wenn Sie ein Timeout-Ereignis erhalten, interpretieren, dass der Server ausgelastet ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top