编程接口指南

套接字选项

可以通过 setsockopt(3SOCKET)getsockopt(3SOCKET) 设置和获取多个套接字选项。例如,可以更改发送或接收缓冲区空间。这些调用的一般形式如下所示:

setsockopt(s, level, optname, optval, optlen);

getsockopt(s, level, optname, optval, optlen);

操作系统可以随时相应地调整这些值。

以下是 setsockopt(3SOCKET)getsockopt(3SOCKET) 调用的参数:

s

要应用选项的套接字

level

指定协议级别,例如由 sys/socket.h 中的符号常量 SOL_SOCKET 指示的套接字级别

optname

sys/socket.h 中定义并指定选项的符号常量

optval

指向选项值

optlen

指向选项值的长度

对于 getsockopt(3SOCKET) 而言,optlen 是一个值结果参数。此参数最初设置为 optval 所指向的存储区域的大小。返回时,此参数的值设置为已使用的存储的长度。

当某程序需要确定现有套接字的类型时,此程序应该使用 SO_TYPE 套接字选项和 getsockopt(3SOCKET) 调用来调用 inetd(1M)

#include <sys/types.h>

#include <sys/socket.h>

 

int type, size;

 

size = sizeof (int);

if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &type, &size) <0) {

  ...

}

getsockopt(3SOCKET) 之后,type 将设置为套接字类型的值,如 sys/socket.h 中所定义。对于数据报套接字,type 应该为 SOCK_DGRAM