Linux下的TCP/IP编程----socket的可选项

在之前我们都是直接通过socket()函数创建一个socket文件描述符直接使用,其实这只是系统为我们提供的一个默认的socket描述符,我们可以根据自己的工程的需求来对socket进行相应的配置,以提高程序的效率。

以下就是一些常见的可选项参数:

协议层选项名读取设置作用
SOL_SOCKETSO_SENDBUFOO设置输出缓冲的大小
SO_RCVBUFOO设置输入缓冲去大小
SO_REUSEADDROO端口释放后立即重用
SO_KEEPALIVEOO开启心跳检测
SO_BROADCASTOO开启广播功能
SO_DONTROURTOO发送给直连网络,和选用的协议有关
SO_OOBINLINEOO直接发送单字节数据
SO_ERROROX调试和异常信息
SO_TYPROX套接字类型

协议层选项名读取设置作用
IPPROTO_IPIP_TOSOO修改IP包的TOS字段.
IP_TTLOO设置主机发送数据包的生存时间
IP_MULTICAST_TTLOO设置多播组数据的TTL值
IP_MULTICAST_LOOPOO设置多播是否回送
IP_MULTICAST_IFOO设置默认接口

协议层选项名读取设置作用
IPPROTO_TCPTCP_KEEPALIVEOO设置主动探测socket是否可用的方式
TCP_NODELAYOO设置Nagle算法
TCP_MAXSEGOO设置发送给对端的最大数据量

设置可选项的方法:

int getsockopt(int sock,int level,int optname,void *optval,socklen_t *optlen):获取socket当前的状态

  • sock(socket描述符):要查看的socket描述符

  • level(协议层):要查看的可选项的协议层

  • optname(可选项名字):要查看的可选项的名字

  • optval(缓冲地址):可选项值的缓冲地址

  • optlen(地址长度):保存返回的可选项值的字节数

成功时返回0,失败时返回-1

int setsockopt(int sock,int level,int optname,const void *optval,socklen_t *optlen):设置socket的状态

  • sock(socket描述符):要设置的socket描述符

  • level(协议层):要设置的可选项的协议层

  • optname(可选项名字):要设置的可选项的名字

  • optval(缓冲地址):要设置的可选项值的缓冲地址

  • optlen(地址长度):保存要设置的可选项值的字节数

成功时返回0,失败时返回-1

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值