pour quoi en particulier les options de socket sont utilisées par exemple setsockopt() et getsockopt() dans la programmation socket?à propos de setsockopt() et getsockopt() fonction
Répondre
Par exemple, vous voulez définir ou savoir recevoir la taille de la mémoire tampon
1)
int skt, int sndsize;
err = setsockopt(skt, SOL_SOCKET, SO_RCVBUF, (char *)&sndsize,
(int)sizeof(sndsize));
err = getsockopt(skt, SOL_SOCKET, SO_RCVBUF, (char *)&sockbufsize, &size);
2) Réutiliser adresse
int on = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
Pour la réutilisation de l'adresse, setsockopt() est utilisé. Mais où cette fonction devrait être utilisée? Du côté serveur ou côté client? –
Pour many différentes choses, y compris changer la taille d'envoi et recevoir des tampons, la longueur des délais, la multidiffusion, maintenir la connexion active, en désactivant l'algorithme de Nagel, etc.
Il existe des niveaux d'options en fonction de la couche réseau avec laquelle interagir: socket, IP, TCP, etc.
Comme déjà mentionné, ils sont utilisés pour définir/obtenir diverses options pour un socket. Par exemple, si vous testez une application serveur qui plante, vous ne devriez pas attendre un certain nombre de minutes avant que le noyau ne vous permette de réutiliser le port en évitant les messages d'erreur "Adresse déjà utilisée". Ceci peut être évité si vous utilisez l'option SO_REUSEADDR
, en laissant d'autres sockets se lier au même port, sauf si un écouteur actif est déjà lié.
Vous pouvez également récupérer des données sur un socket, telles que le nombre de paquets/retransmissions perdus, etc. en utilisant le TCP_INFO
sur des machines Linux.
Fondamentalement, vous pouvez configurer tous les paramètres fins.
Options pour setsockopt(2) et getsockopt(2).
Les deux liens ne fonctionnent plus, veuillez les corriger. –
Superficiellement, prises ressemblent à un tube bidirectionnel qui est utile parce que les appels système standard tels que write
, read
, close
peut être utilisé sur eux comme sur des tuyaux normaux ou même des fichiers. Même si vous ajoutez des appels spécifiques à une socket (listen
, connect
, bind
, accept
), il existe un niveau d'abstraction utile qui cache les détails en faveur de la notion de socket de streaming ou de datagramme. Mais dès que des détails spécifiques au protocole entrent en jeu et que des paramètres spécifiques doivent être réglés (par exemple, tampons d'envoi/réception, paramètres de délai), une interface très générique est nécessaire pour tenir compte des différents paramètres et de leurs données spécifiques formats. getsockopt
, setsockopt
font partie de cette interface générique.
int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t optlen);
Les options spécifiques au protocole sont sélectionnées à l'aide level
et optname
et les données spécifiques au protocole est caché dans un tampon, de sorte que les deux appels système ne ont pas besoin de savoir quoi que ce soit sur les paramètres de chaque protocole du système d'exploitation peut support - il suffit que votre application et l'implémentation du protocole connaissent ces détails.
- 1. Présentation de set/getsockopt SO_SNDBUF
- 2. Définir IP_HDRINCL à la fonction setsockopt dans win32
- 3. Haskell question à propos de la fonction
- 4. setsockopt (sys/socket.h)
- 5. à propos @protocol et catégories
- 6. question à propos de la fonction de messagerie php
- 7. Confondre à propos des appels de fonction de thème
- 8. A propos de la fonction exec() et le temps
- 9. à propos de TranslateTransform et RenderTransformOrigin
- 10. Vraie chose à propos de "->" et "."
- 11. à propos de flash et XML
- 12. À propos de xml et php
- 13. Le problème à propos de move_uploaded_file() fonction dans php
- 14. Multicast en C++: erreur "Une option ou un niveau inconnu, invalide ou non supporté a été spécifié dans un appel getsockopt ou setsockopt"
- 15. à propos de stumbler
- 16. à propos de httpd.conf
- 17. À propos de StreamReader
- 18. problème à propos de récursion
- 19. question à propos de concevoir
- 20. à propos de datagridview
- 21. à propos de removeObjectAtIndex
- 22. Question à propos de Cyclone
- 23. Question à propos des boucles et continuez
- 24. À propos des fonctionnalités Direct2D et DirectWrite
- 25. À propos de l'itérateur et du problème const en C++
- 26. Confusion à propos de sitemap_index.xml
- 27. À propos de l'hébergement asp.net
- 28. À propos de JDBC RowSet
- 29. Confusion à propos de Mono?
- 30. À propos de NSMutableArray objectAtIndex
Google: http://www.cs.utah.edu/dept/old/texinfo/glibc-manual-0.02/library_15.html#SEC266 http://www.cs.utah.edu/dept/old/ texinfo/glibc-manual-0.02/library_15.html # SEC265 La lecture reste un exercice pour le lecteur. –
Pour définir les options de socket documentées. La réponse à cette question devrait être recherchée dans les spécifications et les manuels, pas dans un forum. – EJP