Função Perl getsockopt

Descrição

Esta função obtém as opções de socket definidas em SOCKET no nível de implementação de socket LEVEL para a opção OPTNAME. Alguns valores de amostra para OPTNAME em um nível de soquete são fornecidos na Tabela abaixo -

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.

O que exatamente está na string compactada depende do LEVEL e do OPTNAME, consulte a documentação do sistema para obter detalhes.

Sintaxe

A seguir está a sintaxe simples para esta função -

getsockopt SOCKET, LEVEL, OPTNAME

Valor de retorno

Esta função retorna undef em caso de erro, caso contrário, o valor da opção no contexto escalar.

Exemplo

A seguir está o código de exemplo mostrando seu uso básico, que verificará se o algoritmo de Nagle está ativado em um soquete. Mas, aqui você teria que abrir um soquete para fornecer ID com meia neste exemplo -

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