Función de Perl getsockopt

Descripción

Esta función obtiene las opciones de socket establecidas en SOCKET en el nivel de implementación de socket LEVEL para la opción OPTNAME. En la siguiente tabla se proporcionan algunos valores de muestra para OPTNAME a nivel de socket:

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.

Lo que hay exactamente en la cadena empaquetada depende de LEVEL y OPTNAME; consulte la documentación de su sistema para obtener más detalles.

Sintaxis

A continuación se muestra la sintaxis simple para esta función:

getsockopt SOCKET, LEVEL, OPTNAME

Valor devuelto

Esta función devuelve undef en caso de error; de lo contrario, el valor de la opción en contexto escalar.

Ejemplo

A continuación se muestra el código de ejemplo que muestra su uso básico, esto verificará si el algoritmo de Nagle está activado en un socket. Pero, aquí tendría que abrir un socket para proporcionar una identificación con calcetín en este ejemplo:

#!/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";