Linux____套接字选项

本文详细介绍了Linux中SOL_SOCKET协议族的套接字选项,包括SO_KEEPALIVE、SO_LINGER、SO_RCVBUF/SO_SNDBUF、SO_RCVLOWAT/SO_SNDLOWAT和SO_REUSEADDR等,解释了它们的作用和应用场景。同时提到了IPPROTO_TCP和IPPROTO_IP选项,如TCP_KEEPALIVE、TCP_NODELAY/TCP_CORK、IP_TOS和IP_TTL。最后讨论了ioctl()函数及其在与Linux内核协议栈交互中的应用。
摘要由CSDN通过智能技术生成

SOL_SOCKET协议族选项 :通用地址协议族选项

IPPROTO_TCP和IPPROTO_IP选项 :涉及到传输层和IP层的套接字选项

ioctl()函数 :用户与Linux内核协议栈进行交互的一种方式

——————————SOL_SOCKET协议族选项:——————————


获取和设置套接字选项
SO_KEEPALIVE选项
SO_LINGER选项
SO_RCVBUF和SO_SNDBUF选项
SO_RCVLOWAT和SO_SNDLOWAT选项 :低水位选项?
SO_RCVTIMEO和SO_SNDTIMEO选项 :超时
SO_REUSEADDR选项 :地址重置


获取和设置套接字选项:用来获取或者设置与某个套接字相关的选项

getsockopt()函数和setsockopt()函数原型:
#include <sys/socket.h>
//选项可能存在多层协议中,总会出现在最上面的套接字层。
//当对套接字选项进行操作时必须给出选项所在的层次和选项的名称
//为了操作,应该讲层的值设置为solsocket
//为了操作其它层的选项必须给出控制选项的协议类型号
//第一个参数s表示:将要获取或要设置的套接字描述符
//第二个参数optname值表示:选项名
//optval:表示操作的内存缓冲区
//get:指向用于获取返回选项值的缓冲区
//set:指向用于设置参数的缓冲区
//optlen:表示上一个参数即缓冲区的长度
//get情况下:表示指向socket T类型的指针
//传入参数时:表示传入optval的实际长度
//传出参数时:表示用于保存optval的最大长度
//set情况下:表示第四个参数实际的长度
//成功时返回0失败时返回-1
int getsockopt(int s,int level,int optname,void* optval.socklen_t* optlen);
int setsockopt(int s,int level,int optname,void* optval.socklen_t optlen);

getsockopt()函数和setsockopt()函数错误代码含义:
EBADF:参数s不是有效的文件描述符
EFAULT:optval指向的内存并非有效的进程空间
EINVAL:在调用setsockopt()函数时,optlen无效
ENOPROTOOPT:指向的协议层不能识别选项
ENOTSOCK:s描述的不是套接字描述符

按照参数选项界别level值的不同,套接字选项可以分为3大类:
通用套接选项:level的值为SOL_SO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值