Question

peut Client pousser des données via un socket de domaine UNIX (type AF_UNIX) être signalés occupé si la réception ne peut pas faire face à la charge?

ou

Doit-il y avoir un protocole client-serveur sur le dessus de la prise pour gérer le contrôle de flux?

Était-ce utile?

La solution

A moins d'inclure cela dans le protocole, il n'y a aucun moyen pour le serveur de dire au client de mettre en pause l'envoi des informations.

Autres conseils

Vous pouvez certainement faire un blocage envoyer à un socket de domaine UNIX. Si le tampon de réception côté réception est pleine, ou si le nombre de circulation (non livrée) envoyer des tampons de socket est trop élevé, l'expéditeur bloque.

SOCK_STREAM UNIX Domain Sockets fonctionnent comme des sockets TCP. SOCK_DGRAM UNIX Domain Sockets fonctionnent comme UDP, sauf que les datagrammes UNIX domaine ont garanti, dans l'ordre de livraison, tandis que les sockets UDP peuvent être commandés à nouveau ou abandonnés. (En outre, Sockets domaine UNIX peut être utilisé pour envoyer des descripteurs de fichiers et de transmettre les informations d'identification de l'utilisateur entre les processus, dont aucun ne peut être fait avec TCP, UDP ou tuyaux.)

Alors, parce que dans l'ordre de livraison est garantie par tous les types d'UNIX Sockets de domaine, le récepteur peut simplement cesser de recevoir quand il est occupé à faire autre chose, et l'expéditeur sera automatiquement bloqué quand il n'y a pas plus d'espace tampon disponible (ou sera informé qu'il n'y a pas plus d'espace tampon, si elles ont demandé un fonctionnement non bloquant sur leur prise). Ensuite, lorsque le récepteur commence à recevoir à nouveau, l'expéditeur sera autorisé à envoyer plus.

autre que le serveur ayant une certaine connaissance quand il est « occupé » et l'envoi d'un signal spécifique de retour (par exemple 503 Service de HTTP Non disponible). Vous pouvez également configurer la connexion côté client à délai d'attente après un certain laps de temps, et si vous obtenez un événement de délai d'attente, interpréter que le serveur est occupé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top