linux内核中socket读取和接收的缓冲区大小

2023-11-10

linux内核中socket读取和接收的缓冲区大小

1、socket内核缓冲区大小可用getsockopt获取
2、socket内核缓冲区大小可用setsockopt设置,缓冲区的大小为设置的值的2倍,具体设置代码入下
3、socket缓冲区设置最大为多大呢?
接收缓冲区最大为:/proc/sys/net/core/rmem_max
接收缓冲区大小默认为:/proc/sys/net/core/rmem_default

问题(望大神回答):
1、发送缓冲区大小最大值跟默认值是多少呢?
2、为什么新创建的socket的接收缓存区的大小,跟/proc/sys/net/core/rmem_default中设置的值不一样呢?
3、内核中的socket缓冲区的大小,对于应用层编程有什么影响呢?
4、接收跟发送的缓冲区的大小多少合适呢?


#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(void)
{
        int socketFd;

        if ((socketFd = socket(PF_INET, SOCK_STREAM,0)) < 0)
        {
        /* 获取socket发送和接收缓冲区的大小 */
        optlen = sizeof(snd_size);
        err = getsockopt(socketFd, SOL_SOCKET, SO_SNDBUF, &snd_size, &optlen);
        if (err < 0)
        {

                printf("get send buff failed!\n");
        }

        optlen = sizeof(rcv_size);
        err = getsockopt(socketFd, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen);
        if (err < 0)
        { 
                printf("get rev buff failed!\n");
        }   
            
        printf("senBuffLen:%d\n", snd_size);
        printf("recBuffLen:%d\n", rcv_size);

        /* 设置socket发送和接收缓冲区大小都为8K */
        snd_size = 8*1024;
        optlen = sizeof(rcv_size);
        err = setsockopt(socketFd, SOL_SOCKET, SO_SNDBUF, &snd_size, optlen);
        if(err<0)
        {
                printf("set send buff failed!\n");
        }

        rcv_size = 8*1024;
        optlen = sizeof(rcv_size);
        err = setsockopt(socketFd,SOL_SOCKET,SO_RCVBUF, (char *)&rcv_size, optlen);
        if(err<0){
                printf("set rev buff failed!\n");
        }

        /* 获取socket接收和发送缓冲区大小 */
        optlen = sizeof(snd_size);
        err = getsockopt(socketFd, SOL_SOCKET, SO_SNDBUF, &snd_size, &optlen);
        if (err < 0)
        {
                printf("get send buff failed!\n");
        }

        optlen = sizeof(rcv_size);
        err = getsockopt(socketFd, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen);
        if (err < 0)
        {
                printf("get rev buff failed!\n");
        }

        printf("senBuffLen:%d\n", snd_size);
        printf("recBuffLen:%d\n", rcv_size);


        return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux内核中socket读取和接收的缓冲区大小 的相关文章

  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 为基于架构的 XML 文件创建 WPF 编辑器

    这是场景 我们的服务器产品之一使用大型 XML 配置文件 该文件的布局相当好 并且针对 XSD 文件进行了验证 现在是时候构建一个配置 GUI 来维护这个文件了 我想深入研究 WPF 来完成它 我可以为每个配置部分布置一个单独的表单 每次向
  • 在 T4 代码生成中,如何从引用的程序集中获取类型?

    由于 T4 在项目上下文之外运行 因此我无权访问当前程序集或其他程序集 如何注册对引用程序集的访问 然后从中获取类型 我猜您想访问项目中建筑物的程序集 我在下面的示例代码中所做的是将一个名为 TestLib 的项目添加到我的解决方案中 我将
  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • 我们什么时候应该在.NET中使用NativeMemory.Alloc()? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 NET6 C 引入NativeMemory类 但我不知道什么时候应该使用NativeMemory Alloc 而不是普通的数组实例化
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • 如何使用 Selenium Webdriver .NET 绑定设置 Chrome 首选项?

    这是我正在使用的 用户代理可以成功设置 而下载首选项则不能 Windows 7 Chrome 26 Selenium dotnet 2 31 2 chromedriver win 26 0 1383 0 ChromeOptions chro
  • 是否可以在对Where 的调用中调用命名方法?

    我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能影响ftp support red gate com ebooks under the hood of net memory management part1 pdf f
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 在 boost 元组、zip_iterator 等上使用 std::get 和 std::tie

    我有哪些使用选择std get lt gt and std tie lt gt 与增强结构一起 例子 我想使用基于范围的 for 循环在多个容器上进行迭代 我可以实施zip函数 它使用boost zip iterator include
  • 从 cin 读取整数序列并将它们存储在向量中

    这就是我读取整数的方法std cin并将它们存储在向量中 int number vector
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • OpenSSL:无需 SSL_read() / SSL_write() 即可执行加密/解密

    我已经用 C 语言编写了一个基于事件的网络库 现在我想通过 OpenSSL 添加 SSL TLS 支持 而不是使用SSL read and SSL write 我宁愿让 OpenSSL 只执行传出 传入数据的加密 解密 让我自己传输 接收数
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 查找文本文件中每行的行大小

    如何计算每行中的字符或数字数量 是否有类似 EOF 的东西更像是行尾 您可以遍历行中的每个字符并不断增加计数器直到行尾 n 遇到 确保以文本模式打开文件 r 而不是二进制模式 rb 否则流不会自动将不同平台的行结束序列转换为 n 人物 这是
  • 在地图上使用 find

    如何使用 find 和 aconst iterator如果你有一个地图定义为 typedef std pair

随机推荐

  • 不限时长,免费制作

    在这个信息爆炸的时代 短视频已经崭露头角 成为人们获取信息 娱乐和学习的首选渠道 事实上 大部分互联网用户每天都沉浸在短视频的世界中 这无疑证明了短视频营销的巨大潜力和不可替代的地位 2023年的数据进一步印证了这一点 中国短视频用户规模已
  • 页面禁止长按保存图片和长按复制文字

    1 禁止长按保存图片 img pointer events none 禁止none 启用auto Tips pointer events属性详解 官方文档 https www html cn book css properties user
  • 面试题 01.06. 字符串压缩

    字符串压缩 利用字符重复出现的次数 编写一种方法 实现基本的字符串压缩功能 比如 字符串aabcccccaaa会变为a2b1c5a3 若 压缩 后的字符串没有变短 则返回原先的字符串 你可以假设字符串中只包含大小写英文字母 a至z 示例1
  • 找出数组中的最大有序子数组

    效率O n m import java util HashSet import java util Set public class FindLongestArray public static void main String args
  • 第十四届蓝桥杯单片机第二场模拟赛程序(AD+字符接受串口)

    完整代码 include
  • MIPI介绍(CSI DSI接口)

    MIPI Mobile Industry Processor Interface 是2003年由ARM Nokia ST TI等公司成立的一个联盟 目的是把手机内部的接口如摄像头 显示屏接口 射频 基带接口等标准化 从而减少手机设计的复杂程
  • 解决“AD中设置板子区域时候遇到的找不到闭合形状”问题

    问题说明 今天给大家分享一下 我们在画PCB时候有时候会想将PCB设置区域改为自己板子的大小 就是整个区域就只有自己的板子 大家不明白的话 可以看看下面这张图 或许就明白了 对于如何将PCB区域改为我们板子的形状 可以参考我这篇文章 这里我
  • web3j的基础用法-3ETH交易监听器

    ETH的交易监听器 demo简单实现了4种 监听区块 public Subscription subscribeBlock final Action1
  • 玩客云armbian刷机教程

    文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 3292274545 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自
  • 【机器学习实战】4、基于概率论的分类方法:朴素贝叶斯

    文章目录 4 1 基于贝叶斯决策理论的分类方法 4 1 1 贝叶斯决策理论 4 1 2 条件概率 4 1 3 全概率公式 4 1 4 贝叶斯推断 4 1 5 朴素贝叶斯 4 2 使用朴素贝叶斯进行文档分类 4 3 总结 4 4 朴素贝叶斯改
  • QT+VS2019 环境搭建

    一 概述 一个PC QT 的跨平台项目要维护 需要搭建一套环境 使用的是QT VS2019的环境 QT使用v5 9 3的版本 这个版本qalgorithms h文件要替换成新的 源码附在文尾 vs插件使用qt vsaddin msvc201
  • cuda与cpu高斯列主消元求解线性方程组速度比较

    cuda与cpu高斯列主消元求解线性方程组速度比较 最近看了看cuda上面用c语言进行的编程 踩了很多的坑 在这里记录一下 完整程序已上传 https download csdn net download qq 41910473 12917
  • linux下查找是否安装了fcitx插件

    方法 在命令行输入指令 dpkg L fcitx frontend qt5 也可以查找是否有libfcitxplatforminputcontextplugin so这个库文件 在命令行输入 dpkg L fcix frontend qt5
  • 《计算机组成原理》BCD码 8421编码原理剖析

    作者主页 士别三日wyx BCD码 1 BCD码的作用 2 BCD码的转换原理 3 8421编码 3 1 8421编码的权重划分 3 2 8421编码的加法运算 3 3 8461编码的加6修正 1 BCD码的作用 首先问大家一个问题 计算机
  • 如何防止XSS攻击?

    随着互联网的高速发展 信息安全问题已经成为企业最为关注的焦点之一 而前端又是引发企业安全问题的高危据点 在移动互联网时代 前端人员除了传统的 XSS CSRF 等安全问题之外 又时常遭遇网络劫持 非法调用 Hybrid API 等新型安全问
  • 6-1 使用函数求素数和 (14 分)

    使用函数求素数和 prime p 其中函数prime当用户传入参数p为素数时返回True 否则返回False PrimeSum m n 函数PrimeSum返回区间 m n 内所有素数的和 题目保证用户传入的参数1 lt m
  • css实现气泡对话框

    实现气泡聊天框 我介绍两个方法 第一种 利用旋转 首先设置一个小正方形利用transform属性将其旋转45度 当我们把一个长方形方框和旋转后的小正方形置于一起就可以都得到理想效果 效果图如下 如上图所示 露出来的三角只是小正方形的一角 代
  • Node.js express项目生成器

    使用流程 1 在任意目录打开终端 输入指令 cnpm i express generator g 全局安装 express项目生成器 1 1查看模块安装的路径 输入指令 npm config ls C Users 12015 AppData
  • Java微信APP支付-支付结果通知

    上一章讲了微信APP支付统一下单接口的开发 这一章我们讲支付结果通知接口的开发 这一接口是微信异步调用我们的接口 告之我们支付已经成功了 然后我们补录门店 电商订单 更新APP订单支付信息等业务逻辑 官方的API地址 https pay w
  • linux内核中socket读取和接收的缓冲区大小

    linux内核中socket读取和接收的缓冲区大小 1 socket内核缓冲区大小可用getsockopt获取 2 socket内核缓冲区大小可用setsockopt设置 缓冲区的大小为设置的值的2倍 具体设置代码入下 3 socket缓冲