Linux网络编程之套接字选项设置

1.介绍

在Linux网络编程中,有时需要设置地址复用,允许发送广播包,将主机加入某个多播组,设置发送与接收缓冲区的大小,设置发送与接收的超时时间,将套接字绑定到某个接口上,发送TCP探测包查看客户端是否保持连接等,这些都需要对套接字选项进行设置.而对套接字选项进行操作的主要有以下两个函数,setsockopt与getsockopt. 这两个函数不仅能够操作套接字层,而且能够操作IP层与TCP层.

2.相关函数

#include <sys/types.h>

#include <sys/socket.h>

int getsockopt(int s,int level,int optname,void*optval,socklen_t *optlen);

参数:

s-套接字描述符

level-选项所在的层,主要有SOL_SOCKET(套接字层),IPPROTO_IP(IP选项),IPPROTO_TCP(TCP选项).

optname-选项名

optval-所操作的缓冲区,即参数缓冲区

optlen-传入参数的最大长度的指针(返回参数的实际长度)

返回值:

函数执行成功返回0,失败返回-1.

int setsockopt(int s,int level,int optname,const void*optval,socklen_t optlen);

参数:

s-套接字描述符

level-套接字所在的层

optname-套接字选项名

optval-所操作的缓冲区指针

optlen-所传入参数的实际长度

返回值:

函数执行成功返回0,失败返回-1.


套接字的一些选项值如下表所示:

level Optname get set 说明 标志 数据类型
             
SOL_SOCKET SO_BROADCAST y y 允许发送广播数据报 y int
  SO_DEBUG y y 使能调试跟踪 y int
  SO_DONTROUTE y y 旁路路由表查询 y int
  SO_ERROR y   获取待处理错误并消除   int
  SO_KEEPALIVE y y 周期性测试连接是否存活 y int
  SO_LINGER y y 若有数据待发送则延迟关闭   linger{}
  SO_OOBINLINE y y 让接收到的带外数据继续在线存放 y int
  SO_RCVBUF y y 接收缓冲区大小   int
  SO_SNDBUF y y 发送缓冲区大小   int
  SO_RCVLOWAT y y 接收缓冲区低潮限度   int
  SO_SNDLOWAT y y 发送缓冲区低潮限度   int
  SO_RCVTIMEO y y 接收超时   timeval{}
  SO_SNDTIMEO y y 发送超时   timeval{}
  SO_REUSEADDR y y 允许重用本地地址 y
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值