news 2026/4/18 3:59:17

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/4/5 16:54:47

Mac百度网盘下载加速终极方案:告别限速困扰的3步操作指南

Mac百度网盘下载加速终极方案:告别限速困扰的3步操作指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘在macOS上的龟速下…

作者头像 李华
网站建设 2026/3/12 20:29:42

微信群智能管家:5步打造全天候贴心助手

微信群智能管家:5步打造全天候贴心助手 【免费下载链接】wechatGroupRobot 微信群机器人,在微信群上每天早晨根据天气提醒大家穿衣或带伞, 每隔一段时间提醒喝水,结合百度ai的API做一点geek的事 项目地址: https://gitcode.com/…

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

百度网盘Mac版终极指南:免费解锁SVIP会员特权与性能优化

百度网盘Mac版终极指南:免费解锁SVIP会员特权与性能优化 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘Mac版的龟速下载而烦…

作者头像 李华
网站建设 2026/4/17 1:35:30

AI手势识别在AR中的应用:手势交互系统部署教程

AI手势识别在AR中的应用:手势交互系统部署教程 1. 引言 1.1 手势识别与增强现实的融合趋势 随着增强现实(AR)技术的快速发展,传统基于触摸或语音的交互方式已难以满足沉浸式体验的需求。AI手势识别作为新一代人机交互范式&…

作者头像 李华
网站建设 2026/4/16 17:37:32

FontForge开源字体编辑器:你的专业字体设计秘密武器

FontForge开源字体编辑器:你的专业字体设计秘密武器 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 还在为昂贵的字体设计软件发愁?想要免费制…

作者头像 李华
网站建设 2026/3/31 15:27:06

MediaPipe姿势检测实战:10分钟云端部署,小白也能玩

MediaPipe姿势检测实战:10分钟云端部署,小白也能玩 引言:为什么选择MediaPipe做舞蹈动作分析? 作为一名数字媒体专业的学生,当你需要完成舞蹈动作分析的毕业设计时,可能会遇到各种技术难题。传统的人体姿…

作者头像 李华