setsockopt()和getsockopt()
目录
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()相关推荐
- setsockopt、getsockopt详细介绍(转)
本文只讲解socket编程中的 setsockopt. getsockopt两个函数.关于其它函数的介绍可以参考下面链接: http://blog.sina.com.cn/s/blog_a459dcf ...
- Linux C/C++编程:setsockopt、getsockopt
文章目录 概叙 理论 实践:当前系统支持哪些socket选项 通用套接字选项 TCP_DEFER_ACCEPT TCP_NODELAY TCP_FASTOPEN SO_REUSEADDR.SO_REU ...
- setsockopt和getsockopt参数说明和使用
说明:setsockopt和getsockopt用于设置和获取通信栈上所有层上的选项: 头文件: #include <sys/types.h> #include <sys/socke ...
- setsockopt()和getsockopt()函数参数
setsockopt()函数功能介绍 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为 ...
- setsockopt和getsockopt函数详解
备注:本文非楼主原创,是楼主在网上发现的..写的不错,存起来,以备后用 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 当操作套接字选项时, ...
- setsockopt和getsockopt函数
备注:本文非楼主原创,是楼主在网上发现的..写的不错,存起来,以备后用 功能描述: 获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 当操作套接字选项时, ...
- setsockopt与getsockopt的参数解析与使用
文章链接:https://codemouse.online/archives/2020-03-02-111858 对socket设置和获取 代码声明 #include <sys/types.h& ...
- C语言socket getsockopt() setsockopt()函数(获取和设置套接口的选项?)
文章目录 man 文档(越看越懵逼啊!) 解释 getsockopt()函数用于获取任意类型.任意状态套接口的选项当前值,并把结果存入optval. setsockopt()函数用于任意类型.任意状态 ...
- 【man】getsockopt 和 setsockopt
NAME (名称) getsockopt, setsockopt - get and set options on sockets getsockopt, setsockopt - 获取和设置套接字的 ...
最新文章
- 10玩rust_有趣的 Rust 类型系统: Trait
- 【组队学习】【31期】动手学数据分析
- 第八次课作业(采购管理、信息与配置管理)
- 深入分析 iBATIS 框架之系统架构与映射原理--转载
- 观察者设计模式 php,PHP设计模式 - 观察者模式
- jQuery EasyUI Datagrid组件的完整的基础DOM结构
- 优衣库不雅_Uniqlo主页-用户体验案例研究
- 位运算实现加减乘除四则运算(Java)
- java atlas mysql_使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置
- linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...
- labview曲线上两点画延长线_零失手的‘万能眼线公式’,关键鼻翼延长线、画出适合自己的眼线...
- win10安装NET Framework 3.5提示0x800f0906原因及解决方法
- [下载]北京新版小学英语五年级上册mp3点读APP
- java scanner以回车结束_大佬看了直呼内行,你当初Java刚入门是否也是这样写代码?...
- 学生教育云平台登录入口_学校安全教育平台登录入口
- 安装配置管理 之 JRE 安装和配置,以适合JAVA程序运行所具备的环境
- 7z文件格式及其源码的分析(二)
- CCRC和ISO27001有什么区别?
- android代码设置digits,andorid editext android:digits=abcdefghijklmnopqrstuvwxyz用代码写来控制规则该怎么写呢?...
- 审计机构不用计算机审计,计算机审计存在哪些风险
热门文章
- 计算机水平怎么填范例,简历表个人能力怎么写(大学生个人获奖情况范例)
- 5月6日----5月9日二年级课程表
- 半导体中的电子状态与能带
- ccd视觉定位教程_ccd视觉定位系统工作原理及过程
- 想了解自动驾驶系统,看完这一篇就够了......
- 计算机毕业设计asp.net考勤管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
- Xilinx 7系FPGA总览
- CC00062.LinuxNetwork——|LinuxLNMP部署脚本.V02-|
- 【Go资料】go语言学习资料书籍
- 表情包组件(vue)