当前位置: 首页 > article >正文

(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例

(1) 先介绍下后面的代码里要用到的基础函数:

在这里插入图片描述

++ 以及:

在这里插入图片描述

++

在这里插入图片描述

(2) 接着给出现代版的 读写 socket 参数的系统函数 :

在这里插入图片描述

++ 以及:

在这里插入图片描述

(3) 给出 一言的 范例代码,获取当代 linux 系统的 tcp 套接字的缓存大小:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/types.h>

int main() 
{
    int sockfd , sndbuf, rcvbuf ;        socklen_t optlen;
    
    sockfd = socket(AF_INET, SOCK_STREAM, 0);  // 创建一个 TCP 套接字
    if (sockfd < 0) {   perror("socket");    exit(EXIT_FAILURE);  }

    // 获取发送缓存大小
    optlen = sizeof(sndbuf);
    if (getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (void *)&sndbuf, &optlen) < 0) {
        perror("getsockopt SO_SNDBUF");
        close(sockfd);       exit(EXIT_FAILURE);
    }
    printf("Send buffer size: %d bytes\n", sndbuf);

    // 获取接收缓存大小
    optlen = sizeof(rcvbuf);
    if (getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (void *)&rcvbuf, &optlen) < 0) {
        perror("getsockopt SO_RCVBUF");
        close(sockfd);        exit(EXIT_FAILURE);
    }
    printf("Receive buffer size: %d bytes\n", rcvbuf);

    close(sockfd);  // 关闭套接字

    return 0;
}

++ 给出 ubantu 的打印结果( 跟 30 年前的 伯克利系统里的缓存设置,已经有了很大的差别)

在这里插入图片描述

++ 以下是 30 年前的 tcp/ip 协议的系统缓存设置:

在这里插入图片描述

(4)

谢谢


http://www.kler.cn/a/532932.html

相关文章:

  • 18 大量数据的异步查询方案
  • 接入DeepSeek大模型
  • CSS Display属性完全指南
  • SQL Server中RANK()函数:处理并列排名与自然跳号
  • 安全策略配置
  • JVM 四虚拟机栈
  • Mac M1 ComfyUI 中 AnyText插件安装问题汇总?
  • Unity 2D实战小游戏开发跳跳鸟 - 计分逻辑开发
  • 1.PPT:天河二号介绍【12】
  • Vue - toRaw 与 markRaw
  • Kubeflow——K8S的机器学习利器
  • 人工智能基础知识速成 - 机器学习、深度学习算法原理及其实际应用案例
  • 2025年最新Stable Diffusion 新手入门教程,安装使用及模型下载
  • 【鸿蒙HarmonyOS Next实战开发】Web组件H5界面与原生交互-抽奖页面
  • Fastdds学习分享_xtpes_发布订阅模式及rpc模式
  • unity报错不存在类型或者命名空间
  • Java集合概述(Ⅱ)
  • 企业资金管理-司库(Treasury)
  • RESTful API的设计原则与这些原则在Java中的应用
  • MQTT实战之在vue和java中使用
  • 编程语言中制表符的打印和输出@C#为例进行说明
  • 人类心智逆向工程:AGI的认知科学基础
  • 04树 + 堆 + 优先队列 + 图(D1_树(D15_哈夫曼树/霍夫曼树))
  • 算法与数据结构(合并有序链表)
  • Vue.js 如何选择合适的组件库
  • Spring PropertyPlaceholderConfigurer多配置问题