news 2026/4/19 23:01:54

Socket 编程核心:Accept 函数与三次握手的终章

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程核心:Accept 函数与三次握手的终章

一、 阻塞的“守门员”

accept是一个非常典型的阻塞函数

  • 它的工作:盯着监听套接字(lfd)的读缓冲区。
  • 阻塞条件:如果读缓冲区里是空的(没人来连),accept就让程序停在这里,挂起等待,不消耗 CPU。
  • 解除阻塞:一旦有客户端完成了三次握手,内核会在读缓冲区里放一个请求。accept立刻醒来,处理这个请求。

注意:三次握手是由内核自动完成的,accept只是去“摘取”握手成功的果实。


二、 两个 FD 的故事:监听 vs 通信

这是初学者最容易晕的地方:accept会返回一个新的文件描述符。

  1. 监听描述符 (lfd)

    • 身份迎宾员
    • 数量:整个服务器通常只有1 个
    • 职责:只负责在门口站岗,把连接请求转给通信描述符,绝对不负责传输数据
  2. 通信描述符 (cfd)

    • 身份专属服务员
    • 数量:每连上一个客户端,就多1 个
    • 职责:专门负责和这个特定的客户端收发数据(read/write)。

三、 参数详解:谁连上了我?

intaccept(intsockfd,structsockaddr*addr,socklen_t*addrlen);
  • sockfd:那个唯一的监听描述符。
  • addr(传出参数):这是一个空盘子,由内核负责填满。函数返回后,里面就装了客户端的 IP 和端口(大端序)。如果不想知道是谁连的,可以传NULL
  • addrlen(传入传出参数)
    • 传入:告诉内核这个盘子有多大(sizeof(struct sockaddr_in))。
    • 传出:内核告诉实际填了多少字节。

四、 代码实战:获取客户端身份

下面的代码展示了如何使用accept接受连接,并把客户端的 IP 和端口打印出来。

1. 服务器代码 (accept_demo.c)

#include
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:15:11

Holistic Tracking虚拟试衣间案例:云端GPU 2小时搭建原型

Holistic Tracking虚拟试衣间案例:云端GPU 2小时搭建原型 引言:为什么选择云端GPU搭建虚拟试衣间? 对于电商创业团队来说,虚拟试衣技术能显著提升用户体验和转化率,但传统本地部署方案面临三大痛点: 硬件…

作者头像 李华
网站建设 2026/4/19 14:08:34

企业级语音系统搭建:VibeVoice-TTS集群部署指南

企业级语音系统搭建:VibeVoice-TTS集群部署指南 1. 引言 随着AI语音技术的快速发展,企业对高质量、长文本、多角色对话式语音合成的需求日益增长。传统TTS(Text-to-Speech)系统在处理长篇内容时常常面临延迟高、说话人一致性差、…

作者头像 李华
网站建设 2026/4/19 14:02:54

3步快速构建:打造专属Windows 11系统的终极精简方案

3步快速构建:打造专属Windows 11系统的终极精简方案 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 在数字时代,系统性能直接影响工作效率…

作者头像 李华
网站建设 2026/4/19 14:08:30

AnimeGANv2入门教程:照片转二次元风格一键实现

AnimeGANv2入门教程:照片转二次元风格一键实现 1. 学习目标与前置知识 本教程旨在帮助开发者和AI爱好者快速掌握如何使用AnimeGANv2模型,将真实照片一键转换为高质量的二次元动漫风格图像。通过本文,您将能够: 理解AnimeGANv2的…

作者头像 李华
网站建设 2026/4/19 14:06:30

HunyuanVideo-Foley ONNX转换:跨平台推理兼容性验证

HunyuanVideo-Foley ONNX转换:跨平台推理兼容性验证 1. 引言 1.1 技术背景与挑战 随着多模态生成技术的快速发展,视频内容创作正逐步迈向自动化与智能化。传统音效制作依赖专业音频工程师手动匹配动作与声音,耗时且成本高昂。HunyuanVideo…

作者头像 李华
网站建设 2026/4/17 19:43:31

OpenPLC开源工业控制器:从零搭建到实战应用完整教程

OpenPLC开源工业控制器:从零搭建到实战应用完整教程 【免费下载链接】OpenPLC Software for the OpenPLC - an open source industrial controller 项目地址: https://gitcode.com/gh_mirrors/op/OpenPLC 作为一款功能强大的开源工业控制器仿真平台&#xff…

作者头像 李华