Comment obtenir le nombre maximal d'octets pouvant être transmis à un appel sendto(..)
pour un socket ouvert en tant que port UDP?Longueur maximale du tampon pour sendto?
Répondre
Comme UDP n'est pas orienté connexion, il n'y a aucun moyen d'indiquer que deux paquets appartiennent ensemble. Par conséquent, vous êtes limité par la taille maximale d'un seul paquet IP (65535). Les données que vous pouvez envoyer sont un peu moins nombreuses, car la taille des paquets IP inclut également l'en-tête IP (généralement 20 octets) et l'en-tête UDP (8 octets).
Notez que ce paquet IP peut être fragmenté pour tenir dans des paquets plus petits (par exemple ~ 1500 octets pour Ethernet).
Je ne suis pas au courant d'un système d'exploitation limitant cela davantage.
Utilisez getsockopt(). This site a une bonne répartition de l'utilisation et des options que vous pouvez récupérer.
Sous Windows, vous pouvez faire:
int optlen = sizeof(int); int optval; getsockopt(socket, SOL_SOCKET, SO_MAX_MSG_SIZE, (int *)&optval, &optlen);
Pour Linux, selon la page de manuel UDP, le noyau utilisera la découverte MTU (il va vérifier ce que la taille du paquet UDP maximale est entre ici et la destination , et choisissez cela), ou si la découverte MTU est désactivée, la taille maximale de l'interface MTU sera définie et tout fragment plus important. Si vous envoyez via Ethernet, le MTU typique est de 1500 octets.
Sur Mac OS X, il existe différentes valeurs pour l'envoi (SO_SNDBUF) et la réception (SO_RCVBUF). Ce est la taille de la mémoire tampon d'envoi (man getsockopt):
getsockopt (chaussette, SOL_SOCKET, SO_SNDBUF, (int *) & optval, & optlen);
Si vous tentez d'envoyer un message plus volumineux (sur Leopard 9216 octets sur UDP envoyé via le bouclage local), le message "Message too long/EMSGSIZE" sera généré.
- 1. JSON service web longueur maximale du contenu?
- 2. CString longueur maximale
- 3. Nom d'utilisateur Windows longueur maximale
- 4. Longueur maximale de [NSXMLNode stringValue]
- 5. Limitation du navigateur avec la longueur de page maximale
- 6. Envoi de la longueur du tampon et de la mémoire tampon sur la socket dans c
- 7. l'attribut onclick de longueur maximale dans ie
- 8. Longueur maximale des fragments d'URL (hachage)
- 9. Excel Commentaires - Longueur maximale en 2003
- 10. Longueur maximale pour le code HTML <textarea>
- 11. PHP et MYSQL longueur variable maximale?
- 12. Quelle est la longueur maximale d'un SID au format SDDL
- 13. CEdit contrôle la longueur maximale? (en caractères qu'il peut afficher)
- 14. Valeur maximale en fonction de la taille de la longueur et de la longueur en .NET
- 15. Regex look-behind sans longueur maximale évidente en Java
- 16. Vérification de la longueur maximale d'un champ à l'aide du sélénium IDE
- 17. Existe-t-il une longueur maximale pour userPrincipalName dans Active Directory?
- 18. EmailAddress longueur du champ dans la base
- 19. Quelle est la longueur maximale autorisée pour la propriété window.returnValue? (JavaScript)
- 20. Définition de la longueur maximale pour chaque ligne d'une texbox multiligne
- 21. En C#, comment déterminer la longueur maximale définie par XSD pour un élément
- 22. Existe-t-il une longueur maximale pour les requêtes XPath dans MSXML?
- 23. Configuration de l'environnement pour l'apprentissage du débordement de tampon
- 24. longueur de calcul du tableau
- 25. Déséquilibre du tampon de socket Linux
- 26. SignByCert et la taille maximale du signe
- 27. Adobe flex taille maximale du fichier téléchargé
- 28. Erreurs à l'intérieur du tampon de sortie
- 29. Quelle bonne longueur d'index pour une colonne de texte MySQL?
- 30. Utiliser MPlayer pour déterminer la longueur du fichier audio/vidéo