部分重要的SOCKET选项

  首先介绍两个专门用来读取和设置socket文件描述符属性的系统调用

getsockopt() && setsockopt()

函数原形

//读取socket文件描述符的属性
int getsockopt(int sockfd , int level , int option_name , void* option_value , socklen_t* restrict option_len);
//设置socket文件描述符的属性
int setsockopt(int sockfd , int level , int option_name , const void* option_value , socklen_t option_len)

参数
①、sockfd:
  指定被操作的目标socket
②、level:
  指定要操作哪个协议的选项,比如IPV4,IPV6、TCP等。
③、option_name:
  指定选项的名字
④、option_value: 
  对于getsockopt()来说,指向返回选项值的缓冲。
  对于setsockopt(),指向包含新选项值的缓冲。
④、option_len: 
  对于getsockopt()来说,作为入口参数时,选项值的最大长度。作为出口参数时,选值的实际长度。
  对于setsockopt(),现选项的长度。

返回值
成功时返回0,失败时返回-1,并设置errno。

socket选项表

这里写图片描述
注意
  对于服务器而言,部分socket选项只能在调用listen之前针对监听socket设置才有效。这是因为连接socket只能由accept调用返回,而accept从listen监听队列中获取的连接是已经完成三次握手的,这说明服务器已经想被接受的链接上发送出了TCP同步报文段。但有的socket选项却应该在TCP同步报文段中设置(比如:TCP的最大报文段)。
  对于这种情况,应该对监听socket设置这些选项ÿ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值