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";