le client écrit 5 octets à la socket toutes les 1 seconde. le serveur lit en continu depuis le socket. le tampon à la fin du serveur est long de 10 octets. donc la fonction ressemble à cecicomportement de socket à la lecture
read(fd, buf, 10);
le serveur lit 5 octets à chaque fois.
maintenant le client écrit continuellement 5 octets. le serveur est le même. le serveur lit 10 octets à chaque fois.
est donc que la lecture sur un socket renvoie autant d'octets que disponible dans le tampon. il n'attend pas pour remplir le tampon.
est-ce que cela a quelque chose à voir avec SO_RCVLOWAT. J'ai lu que cette option de socket n'a d'effet que dans select/poll io.
grâce
mise à jour:
i changé SO_RCVLOWAT à 10, il attend maintenant 10 octets au moins dans le tampon de réception. il semble donc que cela a quelque chose à voir avec la marque de basse mer du tampon de réception.
mais je ne peux pas mettre le filigrane bas à 0. il le règle toujours à 1 dans ce cas. pourquoi est-ce vrai?
peut être quelques lectures avec 0 aussi :) –