getsockopt
优质
小牛编辑
139浏览
2023-12-01
描述 (Description)
此函数获取在套接字实现级别LEVEL上为SOCKET设置的套接字选项,用于选项OPTNAME。 套接字级别的OPTNAME的一些示例值在下表中给出 -
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.
打包字符串的确切内容取决于LEVEL和OPTNAME,有关详细信息,请参阅系统文档。
语法 (Syntax)
以下是此函数的简单语法 -
getsockopt SOCKET, LEVEL, OPTNAME
返回值 (Return Value)
此函数在标量上下文中返回错误,否则返回选项值。
例子 (Example)
以下是显示其基本用法的示例代码,这将检查Nagle的算法是否在套接字上打开。 但是,在这个例子中你必须打开一个套接字以提供socked ID -
#!/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";
<!--When above code is executed, it produces the following result −
-->