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

本文深入探讨了Linux网络编程中套接字选项的设置,包括地址复用、广播、多播、缓冲区大小、超时时间等。通过`setsockopt`和`getsockopt`函数,可以对套接字在套接字层、IP层和TCP层进行操作。文章提供了一个实例,展示了如何设置和获取不同套接字选项的值,如SO_BROADCAST、SO_KEEPALIVE、SO_LINGER等,并解释了它们的作用和应用场景。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值