函数功能:setsockopt()函数,用于任意类型、任意状态套接口的设置。
头文件:#include <sys/socket.h>
函数原型:int setsockopt ( int SOCKETs, /* 套接字 */
int level , /* 选项级别 */
int optname , /* 选项级别 */
const char * optval , /* 目标选项的值 */
int optlen ); /* 目标选项的值 */
参数说明:
第一个参数sockfd是套接字描述符。
第二个参数level是被设置的选项的级别。
level指定控制套接字的层次.可以取三种值:
1) SOL_SOCKET:通用套接字选项.
2) IPPROTO_IP:IP选项.
3) IPPROTO_TCP:TCP选项.
如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。
第三个参数optname指定准备设置的选项。
optname可以有哪些取值,这取决于level
第四个参数optval是指针,指向存放选项值的缓冲区
第五个参数optlen指定存放选项值的缓冲区的长度
|
选项名称 |
说明 |
数据类型 |
|
SOL_SOCKET | ||
|
SO_BROADCAST |
允许发送广播数据 |
int |
|
SO_DEBUG |
允许调试 |
int |
|
SO_DONTROUTE |
不查找路由 |
int |
|
SO_ERROR |
获得套接字错误 |
int |
|
SO_KEEPALIVE |
保持连接 |
int |
|
SO_LINGER |
延迟关闭连接 |
struct linger |
|
SO_OOBINLINE |
带外数据放入正常数据流 |
int |
|
SO_RCVBUF |
接收缓冲区大小 |
int |
|
SO_SNDBUF |
发送缓冲区大小 |
int |
|
SO_RCVLOWAT |
接收缓冲区下限 |
int |
|
SO_SNDLOWAT |
发送缓冲区下限 |
int |
|
SO_RCVTIMEO |
接收超时 |
struct timeval |
|
SO_SNDTIMEO |
发送超时 |
struct timeval |
|
SO_REUSERADDR |
允许重用本地地址和端口 |
int |
|
SO_TYPE |
获得套接字类型 |
int |
|
SO_BSDCOMPAT |
与BSD系统兼容 |
int |
|
IPPROTO_IP | ||
|
在数据包中包含IP首部 |
int | |
|
IP_OPTINOS |
IP首部选项 |
int |
|
IP_TOS |
服务类型 |
|
|
IP_MULTICAST_IF |
获取或设置打算从它上面发出多播数据的本地接口 |
无符号长整数 |
|
IP_MULTICAST_TTL |
为套接字获取或设置多播数据包的存在时间 |
|
|
IP_TTL |
生存时间 |
int |
|
IPPRO_TCP | ||
|
TCP最大数据段的大小 |
int | |
|
TCP_NODELAY |
不使用Nagle算法 |
int |
本文详细介绍了setsockopt()函数的功能及使用方法,该函数用于设置任意类型和状态的套接字选项,包括广播、调试、路由等。文章还列举了各种选项级别如SOL_SOCKET、IPPROTO_IP和IPPROTO_TCP,以及具体的选项名称和它们的数据类型。
5726

被折叠的 条评论
为什么被折叠?



