Vous pouvez certainement effectuer un envoi bloquant vers une socket de domaine UNIX. Si le tampon de réception du côté de réception est plein, ou si le nombre de tampons de socket d'envoi en attente (non remis) est trop élevé, l'expéditeur bloque.
SOCK_STREAM Les sockets de domaine UNIX fonctionnent comme des sockets TCP. SOCK_DGRAM Les sockets de domaine UNIX fonctionnent comme UDP, sauf que les datagrammes de domaine UNIX ont une livraison en ordre garantie, tandis que les sockets UDP peuvent être réordonnés ou supprimés. (De plus, les Sockets de domaine UNIX peuvent être utilisés pour envoyer des descripteurs de fichiers et transmettre des informations d'identification entre processus, ce qui ne peut être fait avec TCP, UDP ou pipes.)
types de Sockets UNIX, le récepteur peut simplement arrêter de recevoir quand il est occupé à faire d'autres choses, et l'expéditeur sera automatiquement bloqué quand il n'y a plus d'espace tampon disponible (ou sera notifié qu'il n'y a plus d'espace tampon, opération de blocage sur leur socket). Ensuite, lorsque le destinataire commencera à recevoir à nouveau, l'expéditeur sera autorisé à envoyer plus.
Ainsi, les sockets sont des FIFO sans contrôle de flux: un protocole de couche supérieure est nécessaire pour le contrôle de flux (si nécessaire). – jldupont
TCP/IP ne sait pas trop. Écrire un gestionnaire pour les messages de contrôle (vous devez aussi les écrire) est la seule façon de le faire. – Alex
@ Jean-Lou: c'est correct. 'AF_UNIX' ne fournit absolument aucune sémantique de contrôle de flux. Le périphérique sous-jacent peut fournir des conditions de débordement de tampon entraînant le renvoi d'une erreur par 'send()', mais qui est spécifique au périphérique. –