| sendto | |||
Nomsend, sendto, sendmsg - Envoyer un message sur une socket.Synopsis#include <sys/types.h>#include <sys/socket.h> int send(int s, const void *msg, size_t len, int flags); int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); int sendmsg(int s, const struct msghdr *msg, int flags); DescriptionSend, sendto, et sendmsg permettent de transmettre un message à destination d'une autre socket. Send ne peut être utilisé qu'avec les sockets connectée alors que sendto et sendmsg peuvent être utilisés tout le temps.L'adresse de la cible est donnée par to avec la longueur tolen. la longueur du message est indiquée dans len. Si le message est trop long pour être transmis intégralement au protocole sous-jacent, l'erreur EMSGSIZE sera déclenchée et rien ne sera émis. Aucune indication d'échec de distribution n'est fournie par send. Seules les erreurs locales sont détectées, et indiquées par une valeur de retour -1. Si la socket ne dispose pas de la place suffisante pour le message, alors send va bloquer, à moins que la socket ait été configurée en mode d'entrées/sorties non-bloquantes auquel cas elle renverra EAGAIN. On peut utiliser l'appel système select(2) pour vérifier s'il est possible d'émettre des données. Le paramètre flags peut contenir une ou plusieurs des options suivantes
Voir recv(2) pour une description de la structure msghdr. On peut transmettre des informations de service en employant les membres msg_control et msg_controllen. La longueur maximale du buffer de service que le noyau peut gérer est limité par socket par la valeur net.core.optmem_max de sysctl(). Voir socket(7) . Valeur RenvoyéeCes appels systèmes renvoient le nombre de caractères émis, ou -1 s'ils échouent, auquel cas errno contient le code d'erreur.ErreursVoici les erreurs standards engendrés par la couche socket. Des erreurs supplémentaires peuvent être déclenchées par les protocoles sous-jacents. Voir leurs pages de manuel respectives.
ConformitéBSD 4.4 (cet appel système est apparu dans BSD 4.2), SVr4.NoteLes prototypes founis plus haut suivent les Spécification Single Unix, tout comme glibc2. L'argument flags était un `int' dans BSD 4.*, mais `unsigned int' dans libc4 et libc5. L'argument len était un `int' dans BSD 4.* et libc4, mais un `size_t' dans libc5; L'argument tolen était un `int' dans BSD 4.*, libc4 et libc5. Voir aussi les notes accompagnant la page accept(2) .Voir Aussifcntl(2) , recv(2) , select(2) , getsockopt(2) , sendfile(2) , socket(2) , write(2) , socket(7) , ip(7) , tcp(7) , udp(7)TraductionChristophe Blaess, 1997.
|