目录

1、setsockopt()函数

2、getsockopt()函数

3、简单实例


1、setsockopt()函数

头文件:

#include <sys/types.h>
#include <sys/socket.h>

函数声明:

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

setsockopt()用来设置参数s 所指定的socket 状态。

s:待设置的socket。

level:代表欲设置的网络层,一般设为SOL_SOCKET以存取SOCKET层。

optname:一般有下列几种数值

  • SO_DEBUG       打开或关闭排错模式
  • SO_REUSEADDR    允许在bind()过程中本地地址可重复使用
  • SO_TYPE    返回socket形态
  • SO_ERROR    返回socket已发生的错误原因
  • SO_DONTROUTE  送出的数据包不要利用路由设备来传输
  • SO_BROADCAST   使用广播方式传送
  • SO_SNDBUF    设置送出的暂存区大小
  • SO_RCVBUF    设置接收的暂存区大小
  • SO_KEEPALIVE   定期确定连线是否已终止
  • SO_OOBINLINE   当接收到OOB数据时会马上送至标准输入设备
  • SO_LINGER    去报数据安全且可靠的传送出去

optval:欲设置的值

opelen:optval的长度

返回值:成功返回0,,若有错误则返回-1,错误原因存于error,错误原因有以下情况:

  • EBADF    参数s 并非合法的socket 处理代码
  • ENOTSOCK    参数s 为一文件描述词, 非socket
  • ENOPROTOOPT    参数optname 指定的选项不正确.
  • EFAULT    参数optval 指针指向无法存取的内存空间.

2、getsockopt()函数

头文件:

#include <sys/types.h>
#include <sys/socket.h>

函数声明:

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

getsockopt()会将参数s所指定的socket状态返回。

s:待读取的socket。

level:代表欲读取的网络层,一般设为SOL_SOCKET以存取SOCKET层。

optname:一般有下列几种数值

  • SO_DEBUG       打开或关闭排错模式
  • SO_REUSEADDR    允许在bind()过程中本地地址可重复使用
  • SO_TYPE    返回socket形态
  • SO_ERROR    返回socket已发生的错误原因
  • SO_DONTROUTE  送出的数据包不要利用路由设备来传输
  • SO_BROADCAST   使用广播方式传送
  • SO_SNDBUF    读取送出的暂存区大小
  • SO_RCVBUF    读取接收的暂存区大小
  • SO_KEEPALIVE   定期确定连线是否已终止
  • SO_OOBINLINE   当接收到OOB数据时会马上送至标准输入设备
  • SO_LINGER    去报数据安全且可靠的传送出去

optval:值地址

opelen:optval的长度

返回值:成功返回0,,若有错误则返回-1,错误原因存于error,错误原因有以下情况:

  • EBADF    参数s 并非合法的socket 处理代码
  • ENOTSOCK    参数s 为一文件描述词, 非socket
  • ENOPROTOOPT    参数optname 指定的选项不正确.
  • EFAULT    参数optval 指针指向无法存取的内存空间.

3、简单实例

/*================================================================*   Copyright (C) 2021 baichao All rights reserved.**   文件名称:setsockopt_getsockopt.cpp*   创 建 者:baichao*   创建日期:2021年01月25日*   描    述:*================================================================*/
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/types.h>
int main()
{int tcp_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);int optval;socklen_t optvallen;int sockopt = getsockopt(tcp_socket,SO_SNDBUF,SOL_SOCKET,&optval,&optvallen);std::cout<<"1  optval:"<<optval<<",optvallen:"<<optvallen<<std::endl;optval = 24*1024;optvallen = 4;sockopt = setsockopt(tcp_socket,SOL_SOCKET,SO_SNDBUF,&optval,optvallen);sockopt = getsockopt(tcp_socket,SOL_SOCKET,SO_SNDBUF,&optval,&optvallen);std::cout<<"2  optval:"<<optval<<",optvallen:"<<optvallen<<std::endl;return 0;
}

运行结果:

setsockopt()和getsockopt()相关推荐

  1. setsockopt、getsockopt详细介绍(转)

    本文只讲解socket编程中的 setsockopt. getsockopt两个函数.关于其它函数的介绍可以参考下面链接: http://blog.sina.com.cn/s/blog_a459dcf ...

  2. Linux C/C++编程:setsockopt、getsockopt

    文章目录 概叙 理论 实践:当前系统支持哪些socket选项 通用套接字选项 TCP_DEFER_ACCEPT TCP_NODELAY TCP_FASTOPEN SO_REUSEADDR.SO_REU ...

  3. setsockopt和getsockopt参数说明和使用

    说明:setsockopt和getsockopt用于设置和获取通信栈上所有层上的选项: 头文件: #include <sys/types.h> #include <sys/socke ...

  4. setsockopt()和getsockopt()函数参数

    setsockopt()函数功能介绍 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为 ...

  5. setsockopt和getsockopt函数详解

    备注:本文非楼主原创,是楼主在网上发现的..写的不错,存起来,以备后用 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 当操作套接字选项时, ...

  6. setsockopt和getsockopt函数

    备注:本文非楼主原创,是楼主在网上发现的..写的不错,存起来,以备后用 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 当操作套接字选项时, ...

  7. setsockopt与getsockopt的参数解析与使用

    文章链接:https://codemouse.online/archives/2020-03-02-111858 对socket设置和获取 代码声明 #include <sys/types.h& ...

  8. C语言socket getsockopt() setsockopt()函数(获取和设置套接口的选项?)

    文章目录 man 文档(越看越懵逼啊!) 解释 getsockopt()函数用于获取任意类型.任意状态套接口的选项当前值,并把结果存入optval. setsockopt()函数用于任意类型.任意状态 ...

  9. 【man】getsockopt 和 setsockopt

    NAME (名称) getsockopt, setsockopt - get and set options on sockets getsockopt, setsockopt - 获取和设置套接字的 ...

最新文章

  1. 10玩rust_有趣的 Rust 类型系统: Trait
  2. 【组队学习】【31期】动手学数据分析
  3. 第八次课作业(采购管理、信息与配置管理)
  4. 深入分析 iBATIS 框架之系统架构与映射原理--转载
  5. 观察者设计模式 php,PHP设计模式 - 观察者模式
  6. jQuery EasyUI Datagrid组件的完整的基础DOM结构
  7. 优衣库不雅_Uniqlo主页-用户体验案例研究
  8. 位运算实现加减乘除四则运算(Java)
  9. java atlas mysql_使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置
  10. linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...
  11. labview曲线上两点画延长线_零失手的‘万能眼线公式’,关键鼻翼延长线、画出适合自己的眼线...
  12. win10安装NET Framework 3.5提示0x800f0906原因及解决方法
  13. [下载]北京新版小学英语五年级上册mp3点读APP
  14. java scanner以回车结束_大佬看了直呼内行,你当初Java刚入门是否也是这样写代码?...
  15. 学生教育云平台登录入口_学校安全教育平台登录入口
  16. 安装配置管理 之 JRE 安装和配置,以适合JAVA程序运行所具备的环境
  17. 7z文件格式及其源码的分析(二)
  18. CCRC和ISO27001有什么区别?
  19. android代码设置digits,andorid editext android:digits=abcdefghijklmnopqrstuvwxyz用代码写来控制规则该怎么写呢?...
  20. 审计机构不用计算机审计,计算机审计存在哪些风险

热门文章

  1. 计算机水平怎么填范例,简历表个人能力怎么写(大学生个人获奖情况范例)
  2. 5月6日----5月9日二年级课程表
  3. 半导体中的电子状态与能带
  4. ccd视觉定位教程_ccd视觉定位系统工作原理及过程
  5. 想了解自动驾驶系统,看完这一篇就够了......
  6. 计算机毕业设计asp.net考勤管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
  7. Xilinx 7系FPGA总览
  8. CC00062.LinuxNetwork——|LinuxLNMP部署脚本.V02-|
  9. 【Go资料】go语言学习资料书籍
  10. 表情包组件(vue)