Fonction getsockopt de Perl
La description
Cette fonction obtient les options de socket définies sur SOCKET au niveau d'implémentation de socket LEVEL pour l'option OPTNAME. Quelques exemples de valeurs pour OPTNAME au niveau du socket sont donnés dans le tableau ci-dessous -
OPTNAME Result
SO_DEBUG Get status of recording of debugging information
SO_REUSEADDR Get status of local address reuse
SO_KEEPALIVE Get status of keep connections alive
SO_DONTROUTE Get status of routing bypass for outgoing messages
SO_LINGER Get status of linger on close if data is present
SO_BROADCAST Get status of permission to transmit broadcast messages
SO_OOBINLINE Get status of out-of-band data in band
SO_SNDBUF Get buffer size for output
SO_RCVBUF Get buffer size for input
SO_TYPE Get the type of the socket
SO_ERROR Get and clear error on the socket
TCP_NODELAY To disable the Nagle buffering algorithm.
Ce qu'il y a exactement dans la chaîne compressée dépend de LEVEL et OPTNAME, consultez la documentation de votre système pour plus de détails.
Syntaxe
Voici la syntaxe simple de cette fonction -
getsockopt SOCKET, LEVEL, OPTNAME
Valeur de retour
Cette fonction renvoie undef en cas d'erreur sinon la valeur de l'option dans un contexte scalaire.
Exemple
Voici l'exemple de code montrant son utilisation de base, cela vérifiera si l'algorithme de Nagle est activé sur une socket. Mais, ici, vous devrez ouvrir une socket pour fournir un identifiant intégré dans cet exemple -
#!/usr/bin/perl
use Socket qw(:all);
defined(my $tcp = getprotobyname("tcp"))
or die "Could not determine the protocol number for tcp";
# my $tcp = IPPROTO_TCP; # Alternative
my $packed = getsockopt($socket, $tcp, TCP_NODELAY)
or die "Could not query TCP_NODELAY socket option: $!";
my $nodelay = unpack("I", $packed);
print "Nagle's algorithm is turned ", $nodelay ? "off\n" : "on\n";