27. getsockopt和setsockopt函数

套接字总结 阅读详情

这里两个函数可以用来设置套接字选项或者说属性. 当然套接字选项的函数还有fcntl和ioctl, 但是现在暂时不会涉及到. 本机就来介绍者这两个函数.

函数原型

两个函数是根据套接字的类别对其进行设置的. 比如前面涉及到的Nagle算法的关闭.

#include <sys/socket.h>

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

成功 : 返回0

失败 : 返回-1.

函数参数
  • sockfd : 套接字

除sockfd参数, 其他参数就用再网上找的图来说明, 这里也只罗列部分我们可能会用到的, 毕竟选项太多了.

  • level : 第一列
  • optname : 第二列
  • optval : 对应数据类型的参数. getsockopt将获取的值保存在该参数, 而setsockopt是将设置新的值.
  • optlen : 参数optval数据类型的大小.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

函数调用

前面参数估计头都大了, 现在我们还是以关闭Nagle算法为例来使用一下setsockopt函数吧.

int ret;
int num = 1;
ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &num, sizeof(int));
if(ret < 0)
    EXIT("setsockopt");
总结

以后可能我们会涉及到这些选项, 只需要清楚部分重要的就行了.

  • 掌握两个函数的原型
  • 尝试SO_REUSEADDR选项
  • 了解一下SO_LINGER选项的功能. 本质是改变close函数的行为.
setsockopt 函数功能及参数详解 setsockopt() 函数用于任意类型、任意状态套接口的设置选项值 阅读详情

相关推荐

【信息科学与工程学】【产品体系】【数据中心】第四十四篇 云资源部署设计04

设计基于SD-WAN的多云互联方案,通过软件定义的overlay网络连接阿里云、AWS、腾讯云、华为云等,实现动态路径选择和带宽聚合,替代传统MPLS VPN。- 综合评分函数:Scorei​=w1​⋅Li​Lmin​​+w2​⋅(1−Pi​)+w3​⋅Bmax​Bi​​−w4​⋅Cmax​Ci​​。设计基于eBPF/XDP的容器网络加速方案,替换传统的iptables/kube-proxy,实现Pod间通信零拷贝转发,降低延迟和CPU开销。

weixin_49199313的博客 31

setsockopt()函数详解

函数原型: int setsockopt(int sockfd , int level, int optname, void *optval, socklen_t *optlen); 函数功能:设置套接字描述符的属性。 参数: sockfd:指向要设置的套接字描述符。 level:

qq_41960161的博客 2万+

RPA实战:手把手教你打造抖音自动养号机器人(含避坑指南)

本文详细介绍了如何利用RPA技术从零构建一个智能化的抖音自动养号机器人。内容涵盖环境准备、核心工具选型、拟人化行为流程设计、代码实现模块拆解,并提供了关键的避坑指南与风控对抗策略,帮助开发者高效、稳定地实现账号自动化运营。

orange的博客 557

setsockopt()函数

参考文献: setsockopt用法大全 setsockopt函数功能及参数详解 1.函数说明 #include <sys/socket.h> int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 参数说明: (1) int sockfd: 很简单,socket句柄 (2) int level:...

无线互联&网络介绍 1万+

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1519

NVMe-MI --- Message Servicing Model(消息服务模型)

本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。

智小星的博客 2009

setsockopt函数

初学者必学的四种设置setsockopt函数方式。第一种用于广播设置、第二种用于多播设置、第三种增加地址复用功能、第四种增加端口复用功能。

weixin_47783699的博客 5733

001-基础入门-Web演示源码&资源&工具箱等

小迪安全2023笔记

wushangyu32335的博客 4256

【Linux C | 网络编程】套接字选项、getsockopt、setsockopt详解及C语言例子

👉本文介绍网络编程中的套接字选项,先是汇总了常见的套接字选项,然后介绍获取和设置套接字选项的函数getsockopt、setsockopt,并给出对应的C语言例子,最后列出几个常见的通用套接字选项。

wkd_007的博客 4298

Linux【实战】—— LAMP环境搭建 & 部署网站

由LinuxApacheMySQLPHP组成的一个web网络平台。

2201_75935630的博客 4980

VScode搭建Opencv(C++开发环境)

VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错

河旬的博客 8万+

Linux setsockopt和getsockopt函数的用法分析

套接字机制提供两个套接字选项来控制套接字行为。一个接口用来控制选项,另一个接口允许查询一个选项的状态。 1 #include <sys/types.h> 2 #include <sys/socket.h> 3 4 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_...

weixin_34362790的博客 334

语言大模型之Tokenization的深入理解

Tokenization(分词)是自然语言处理(NLP)中一个非常重要的步骤,它的目标是将文本转换为模型可以理解的格式。对于像GPT、BERT等大型预训练模型来说,tokenization决定了文本如何转化为数字表示,从而影响模型在不同任务中的表现。接下来我会深入介绍tokenization的过程、不同的tokenization方法,以及它与模型微调(fine-tuning)之间的关系。

JustinMars的博客 339

C函数篇(setsockopt函数②)

套接口选项 在前面的几章中,我们讨论了使用套接口的基础内容。现在我们要来探讨一些可用的其他的特征。在我们掌握了这一章的概念之后,我们就为后面的套接口的高级主题做好了准备。在这一章,我们将会专注于下列主题: 如何使用getsockopt(2)函数获得套接口选项值 如何使用setsockopt(2)函数设置套接口选项值 如何使用这些常用的套接口选项 得到套接口选项 ...

weixin_30544657的博客 261

多源异构数据融合(Kaggle+Google Trends联合分析)

本文详细介绍了如何利用Python实现多源异构数据融合,以Kaggle电商销售数据与Google Trends搜索指数为例,展示了数据清洗、预处理、时间对齐、数据合并、相关性分析、回归建模和可视化全过程。数据预处理与内存优化通过分块加载、数据类型转换和缺失值处理,有效降低了大规模数据在内存中的占用,并确保数据质量。时间对齐与数据融合策略采用重采样与内连接方法对齐不同数据源的时间维度,实现了高质量数据的融合,为后续联合分析奠定基础。模型构建与分析。

闲人编程的博客 1014

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LINUX下getsockopt和setsockopt函数

这两个函数仅用于套接字。 函数原型: 1 #include <sys/socket.h> 2 #include <sys/types.h> 3 4 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); 5 6 int setso...

weixin_30649641的博客 180

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Unix网络编程】socket函数与描述符

socket描述符,与相关选项

Code of Duty 1099

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python网络编程——修改套接字发送和接收的缓冲区大小

https://www.cnblogs.com/ouyangyixuan/p/5894542.html 很多情况下,默认的套接字缓冲区大小可能不够用。此时,可以将默认的套接字缓冲区大小改成一个更合适的值。 1. 代码 1 # ! /usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import socket 5 6 ...

Mike.Song的专栏 2226

linux网络编程 端口复用与半关闭shutdown

1 /** 2 头文件:#include <sys/socket.h> 3 原型:int shutdown(int sockfd, int how); 4 5 sockfd:需要关闭的sock描述符 6 how:允许为shutdown操作选择一下几种方式 7 SHUT_RD(0): 关闭sock上的读功能,套接字不再接受数据,任何当前在套接字缓冲区上的数据将被删除 8 SHUT_WR(1): 关闭sock上的写功...

m0_59008960的博客 299

启用/查看套接字选项的方法

前言   在网络套接字编程中,我们可以通过设置套接字选项让网络协议按照我们预想的方式工作。本文教你如何获取当前的套接字选项,以及如何设置套接字选项。 涉及函数   以下两个函数包含在头文件 sys/socket.h 中   1. int getsockopt ( int sockfd, int level, int optname, void * optval, socklen_t * o...

weixin_30546189的博客 194

第二十一篇:启用/查看套接字选项的方法

前言        在网络套接字编程中,我们可以通过设置套接字选项让网络协议按照我们预想的方式工作。本文教你如何获取当前的套接字选项,以及如何设置套接字选项。 涉及函数        以下两个函数包含在头文件 sys/socket.h 中 1. int getsockopt ( int sockfd, int level, int optname, void * optval, sockl...

weixin_33681778的博客 170

duckOS系统调用大全:40+核心接口如何连接用户程序与C++内核(附API参考)

duckOS 是一款用现代 C++ 编写的 x86 单体内核操作系统,它的**系统调用(System Call)**是用户程序与内核之间唯一的"合法通道"。本文带你完整看懂 duckOS 的 91 个系统调用号、`int 0x80` 中断如何触发内核、参数与返回值约定,并附上一份按功能分类的 API 参考清单,帮你快速定位每一个核心接口的实现源码。 [![duckOS 系统调用大全:桌面终端中运

gitblog_00227的博客 325

c++总结(持续更新中)

1、c++的默认继承方式为private。

多看多听多总结 463

服务器开发——setsockopt函数

*** level:选项所在的协议层。例如,SOL_SOCKET 表示套接字层,IPPROTO_TCP 或 IPPROTO_IP 表示 TCP 或 IP 层。* optname:要设置的选项的名称。每个协议层都定义了自己的一组选项。* optval:指向一个变量的指针,该变量包含选项的新值。这个变量的类型取决于 optname 的值。* @return 成功(0);

qq_45595546的博客 1255

setsockopt

setsockopt是 C 语言中用于配置套接字(socket)选项的系统函数,允许开发者对套接字的行为进行精细控制。它属于头文件,常用于网络编程中调整协议栈参数、超时设置、缓冲区大小等。sockfd目标套接字的文件描述符(由socket()创建)。levelSOL_SOCKETIPPROTO_IPoptnameSOL_SOCKETbindSO_RCVBUFSO_SNDBUFoptval指向选项值的指针,类型可能为int等,取决于optname。数据的长度(字节数)。

weixin_41812346的博客 1087
上一篇: 28. TCP协议之Nagle算法与CORK算法
下一篇: 31. TCP异常之TCP可能出现异常的原因
Function_18
博客等级 码龄10年 193粉丝 239原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值