news 2026/6/10 17:54:13

Socket 编程必修课:Bind 函数与地址结构体的奥秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程必修课:Bind 函数与地址结构体的奥秘

各类资料学习下载合集
链接:https://pan.quark.cn/s/7c8c391011eb

一、 为什么必须 Bind?

在 TCP 通信中,服务器的角色就像是一家实体店

  • Socket:相当于你注册了营业执照。
  • Bind:相当于你租下了一个具体的门面(IP + 端口)。

如果你不开店(不 Bind),虽然你也可以去逛街(作为客户端连接别人),但顾客(客户端)永远找不到你在哪里。因此,服务器必须绑定固定的 IP 和端口


二、 结构体的“变装秀”:sockaddrvssockaddr_in

这是 Socket 编程中最让新手困惑的地方:为什么有两个地址结构体?

1. 历史遗留问题

bind函数设计之初,是为了支持所有协议(IPv4, IPv6, UNIX 域等)。因此,它的参数类型是通用的struct sockaddr*

2. 内存布局对比

为了方便程序员操作,针对 IPv4 协议,系统提供了专用的struct sockaddr_in。好消息是,它们在内存中的大小完全一样(16字节),可以直接强转。

字节偏移struct sockaddr(通用)struct sockaddr_in(IPv4专用)
0 - 1sa_family(地址族)sin_family(地址族,如 AF_INET)
2 - 3sa_data(混合数据)sin_port(端口号)
4 - 7sin_addr(IP地址)
8 - 15sin_zero(填充字节,为了凑齐16字节)

最佳实践:我们在代码中定义和填充sockaddr_in,但在调用bind时,将其强制类型转换为sockaddr*


三、 Bind 函数详解

intbind(intsockfd,conststructsockaddr*addr,socklen_taddrlen);
  • 参数 1 (sockfd):通过socket()创建的文件描述符。
  • 参数 2 (addr):指向地址结构体的指针(需强转)。
  • 参数 3 (addrlen):结构体的大小,通常写sizeof(struct sockaddr_in)

常用写法模板

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

博德之门3模组管理神器:BG3ModManager完全使用手册

博德之门3模组管理神器:BG3ModManager完全使用手册 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 作为《博德之门3》玩家必备的模组管理工具,BG3ModManager能够…

作者头像 李华
网站建设 2026/6/10 2:14:54

Z-Image-Turbo企业级方案:按需GPU助力降本80%

Z-Image-Turbo企业级方案:按需GPU助力降本80% 引言:初创公司的AI营销痛点与解决方案 对于初创公司来说,营销素材的制作往往面临两难困境:专业设计团队成本高昂,而外包服务又难以快速响应需求。传统方式制作一套产品宣…

作者头像 李华
网站建设 2026/6/2 17:03:11

MediaPipe Hands部署优化:提升稳定性的5个方法

MediaPipe Hands部署优化:提升稳定性的5个方法 1. 背景与挑战:AI手势识别的落地瓶颈 随着人机交互技术的发展,基于视觉的手势识别正逐步从实验室走向消费级应用。Google 开源的 MediaPipe Hands 模型凭借其轻量、高精度和跨平台能力&#x…

作者头像 李华
网站建设 2026/6/3 15:53:51

看完就想试!Qwen2.5-0.5B-Instruct打造的智能助手效果展示

看完就想试!Qwen2.5-0.5B-Instruct打造的智能助手效果展示 你是否曾幻想过拥有一个能理解文言文、会角色扮演、还能生成结构化数据的AI助手?现在,这一切只需一个轻量级模型——Qwen2.5-0.5B-Instruct就能实现。作为阿里通义千问系列中最小的…

作者头像 李华
网站建设 2026/6/3 14:08:08

AI编舞师养成:骨骼点检测+动作库,个人创作者利器

AI编舞师养成:骨骼点检测动作库,个人创作者利器 引言:当舞蹈遇上AI 想象一下,你是一位独立编舞师,每天要观看上百支舞蹈视频寻找灵感,手动记录每个动作细节。这不仅耗时费力,还容易遗漏精彩片…

作者头像 李华
网站建设 2026/5/30 18:11:17

动作识别入门必看:骨骼点检测云端实验平台新手指南

动作识别入门必看:骨骼点检测云端实验平台新手指南 引言:为什么选择骨骼点检测作为动作识别第一步? 当你第一次接触动作识别技术时,可能会被各种复杂的名词吓到——3D姿态估计、时空建模、行为分类...但所有高级应用都建立在同一…

作者头像 李华