news 2026/6/19 8:37:51

Socket 编程进阶:Listen 函数与 Backlog 参数的秘密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程进阶:Listen 函数与 Backlog 参数的秘密

一、 为什么需要 Listen?

默认情况下,socket()创建的套接字是主动的(准备去连接别人)。
而服务器需要的是被动套接字(等着被别人连接)。

listen()函数的作用就是把套接字从“主动模式”切换到“被动监听模式”。打个比方,bind是租好了店面,listen就是打开店门,挂上“营业中”的牌子。


二、 核心参数:神秘的backlog

intlisten(intsockfd,intbacklog);
  • sockfd: 已经绑定好的监听套接字。
  • backlog:未完成连接队列的最大长度

1.backlog到底是什么?

很多新手误以为它是“服务器能支持的最大在线人数”。错!

backlog指的是同一时刻正在排队等待被accept接入的连接数

  • 想象一下奶茶店:
    • 店里能容纳 100 人喝奶茶(系统总资源)。
    • 柜台前只能排队 5 个人(backlog)。
    • 如果收银员(accept)动作很快,即便有一万个顾客陆续来,只要排队不超过 5 个,系统就能正常运转。
    • 如果收银员不动了,第 6 个人就排不进来了。

2. 这个值设多大合适?

  • 笔记重点:内核中通常有一个硬限制(如 128)。即便你把backlog设为 10000,系统也可能只认 128。
  • 行为
    • 如果设置 5,系统会同时维护 5 个等待连接。
    • 如果有更多连接涌入,系统会分批轮询处理。
    • 如果队列满了,多余的客户端连接请求可能会收到“Connection Refused”错误,或者被暂时忽略(依赖 TCP 重传机制)。

三、 代码实战:验证 Backlog 的排队效应

为了验证backlog的作用,我们设计一个**“偷懒”服务器**:它开启监听,但死活不调用accept取出连接。这样,连接队列很快就会被填满。

1. 偷懒的服务器 (lazy_server.c)

#include<stdio.h>#include<unistd.h>#include<arpa/inet.h>#include<stdlib.h>intmain(){int
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 2:44:04

HunyuanVideo-Foley容器化部署:Docker镜像使用与K8s编排

HunyuanVideo-Foley容器化部署&#xff1a;Docker镜像使用与K8s编排 1. 技术背景与应用场景 随着AI生成内容&#xff08;AIGC&#xff09;在多媒体领域的深入发展&#xff0c;视频制作的自动化和智能化需求日益增长。音效作为提升视频沉浸感的关键环节&#xff0c;传统依赖人…

作者头像 李华
网站建设 2026/6/10 20:35:18

实测AI智能文档扫描仪:办公文档秒变高清扫描件

实测AI智能文档扫描仪&#xff1a;办公文档秒变高清扫描件 1. 引言&#xff1a;为什么我们需要智能文档扫描&#xff1f; 在日常办公中&#xff0c;我们经常需要将纸质文件、合同、发票或白板内容数字化。传统方式依赖专业扫描仪或手动拍照后裁剪调整&#xff0c;效率低且效果…

作者头像 李华
网站建设 2026/6/15 16:50:12

AI模型租赁时代:1小时起租,像共享单车一样方便

AI模型租赁时代&#xff1a;1小时起租&#xff0c;像共享单车一样方便 1. 引言&#xff1a;当AI算力遇上共享经济 想象一下这样的场景&#xff1a;凌晨2点接到客户紧急需求&#xff0c;需要跑通一个Stable Diffusion模型生成50张产品概念图。作为自由职业者的你&#xff0c;手…

作者头像 李华
网站建设 2026/6/3 10:45:20

venera UI组件库:重新定义跨平台漫画应用开发效率

venera UI组件库&#xff1a;重新定义跨平台漫画应用开发效率 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 你是否曾为构建漫画应用而头疼不已&#xff1f;传统的开发方式往往需要从零开始搭建每一个界面组件&#xff0c;不…

作者头像 李华
网站建设 2026/6/19 0:53:57

企业级权限管理系统快速搭建:从零到精通的技术实践指南

企业级权限管理系统快速搭建&#xff1a;从零到精通的技术实践指南 【免费下载链接】Zr.Admin.NET &#x1f389;ZR.Admin.NET是一款前后端分离的、跨平台基于RBAC的通用权限管理后台。ORM采用SqlSugar。前端采用Vue、AntDesign&#xff0c;支持多租户、缓存、任务调度、支持统…

作者头像 李华
网站建设 2026/6/16 18:55:03

AI学习机对比:给孩子买万元设备不如租用专业GPU

AI学习机对比&#xff1a;给孩子买万元设备不如租用专业GPU 1. 为什么专业GPU比AI学习机更值得投资 最近不少家长发现&#xff0c;市面上标价上万元的"AI学习机"实际上只是性能被严重阉割的普通平板电脑。这些设备虽然打着AI教育的旗号&#xff0c;但内置的AI功能往…

作者头像 李华